用上面一行中的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的列。
这可以通过快速使用Find
和FindNext
在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
照片前后