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

时间:2015-06-02 21:22:31

标签: r excel date

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

enter image description here

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

4 个答案:

答案 0 :(得分:4)

易于使用Excel。将所有\N替换为空,请选择两个相关列,HOME>编辑,查找&选择,转到特殊...,空白,然后

=

控制 + 输入

然后再次复制范围和HOME>剪贴板 - 粘贴,粘贴特殊...,值,顶部确定。

答案 1 :(得分:3)

如果这是您要导入R的Excel文件,那么您需要了解R如何使用反斜杠字符(屏幕截图中显示的内容)以及用于" escape& #34;字符。见?Quotes。一旦数据在R中,它可能都是因子列。

如果数据框命名为' dat'那么这应该可以真正实现真正的缺失值:

is.na( dat) <- dat == "\\N"  # need to escape the escape character.

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

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日期分类变量。

答案 2 :(得分:1)

使用以下代码可以在R中轻松解决:

ListNa <- grep("\\N", a$date)
ListPrewRow <- ListNa-1
data[ListNa,c("date", "day")] <- data [ListPrewRow,c("date", "day")]

其中:

  • &#34;数据&#34;是数据表
  • &#34;日期&#34;和&#34; day&#34;是要替换的列。

答案 3 :(得分:0)

可以在Excel中快速使用FindFindNext来完成此操作。假设您要替换\N上的所有ActiveSheet,此代码将在替换所有代码后终止。 Offset(-1)获取一行的值。

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

图片之前和之后

before after