用上面一行中的date值replace一个string

我有一个数据集,我有大约200 \N ,我想用上面的行中的date/天值replace\N 如第641行,我想将date更改为10-11-14以及星期一至星期一:

在这里输入图像说明

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

易于在Excel中。 将所有\N全部replace为空,select两个相关的列,即HOME> Editing,Find&Select,Go To Special …,Blanks,然后

=

Ctrl + Enter

然后再次复制范围和HOME>剪贴板 – 粘贴,select性粘贴…,值,确定顶部。

如果这是一个你导入到R中的Excel文件,那么你需要了解R如何处理反斜线字符(这是截图中显示的内容)以及用于“转义”字符的东西。 看?Quotes 。 一旦数据在R中,它可能都是因子列。

如果数据框被命名为“dat”,那么这应该真正地产生真正的缺失值:

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

然后使用包zoo中的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) 

这些方法应该适用于任何类的列,并且这些方法在进行转换之前不会是Rdate分类的variables。

用R代码可以很容易地解决这个问题:

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

哪里:

  • “数据”是数据表
  • “date”和“日”是要被replace的列。

这可以通过快速使用FindFindNext在Excel中快速完成。 假设你想要replaceActiveSheet上的所有\N ,这个代码将在它全部replace之后终止。 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 

照片前后

之前后