我有一个数据集,其中我有大约200 \N
,我想将\N
替换为上面一行中的日期/日期值。例如对于行641,我想将日期更改为10月11日 - 14日,将日期更改为星期一:
如果可以在R中完成,日期格式是否重要?目前,这些日期显示为因素。
答案 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")]
其中:
答案 3 :(得分:0)
可以在Excel中快速使用Find
和FindNext
来完成此操作。假设您要替换\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
图片之前和之后