首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用上面行中的日期值替换字符串

用上面行中的日期值替换字符串
EN

Stack Overflow用户
提问于 2015-06-02 21:22:30
回答 3查看 145关注 0票数 0

我有一个数据集,其中我有大约200个\N,我想用上面行中的date/day值替换\N。例如,对于第641行,我希望将日期更改为10-11月14日,并将日期更改为:

如果这可以在R中完成,日期的格式重要吗?目前,这些日期是作为因素显示的。

EN

回答 3

Stack Overflow用户

发布于 2015-06-02 21:37:40

如果这是您要导入到R中的Excel文件,那么您需要了解R是如何与反斜杠字符(这是屏幕截图中显示的字符)一起工作的,并用来“转义”字符。见?Quotes。一旦数据在R中,它可能都是因子列。

如果dataframe被命名为'dat‘,那么这应该可以真正实现缺失值:

代码语言:javascript
复制
is.na( dat) <- dat == "\\N"  # need to escape the escape character.

然后使用软件包动物园的na.locf:

代码语言:javascript
复制
library(zoo) # lots of useful methods in zoo.
dat$date <- na.locf(dat$date)
dat$day_of_week <-  na.locf(dat$day_of_week)

这些方法应该适用于任何类型的列,在进行转换之前,这些都不是R-日期类变量。

票数 3
EN

Stack Overflow用户

发布于 2015-06-02 22:43:24

使用以下代码可以轻松地在R中解决这个问题:

代码语言:javascript
复制
ListNa <- grep("\\N", a$date)
ListPrewRow <- ListNa-1
data[ListNa,c("date", "day")] <- data [ListPrewRow,c("date", "day")]

其中:

  • " data“是数据表。
  • “日期”和“日”是要替换的列。

票数 1
EN

Stack Overflow用户

发布于 2015-06-02 21:33:14

通过快速使用FindFindNext,可以在Excel中快速完成这一任务。假设您想要替换\N上的所有ActiveSheet,这段代码一旦全部替换,就会终止。Offset(-1)将值向上一行。

代码语言:javascript
复制
Sub ReplaceWithValueAbove()

    Dim rng_search As Range
    Set rng_search = ActiveSheet.UsedRange.Find("\N")

    While Not rng_search Is Nothing
        'set to row above
        rng_search = rng_search.Offset(-1)

        'find the next one
        Set rng_search = ActiveSheet.UsedRange.FindNext()
    Wend

End Sub

前后图片

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30606850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档