该问题与数据帧有关,该数据帧由缺失值、日期和在日和/或月之前具有负号的一些不可信的日期组成。我使用下面的代码将excel文件中的数据读取到R中
df <- data.frame(read_excel("dat.xlsx", col_types = c("numeric", "guess"))) 这会将日期更改为数字值。当然,如果我想获得日期,我可以将上面代码中的“猜测”替换为“日期”。但是,我希望获得不可信的日期,并将所有其他条目替换为NA。数据帧的一个示例是
df<-data.frame("id"=c(1,2,3,4,5),
"date" = c("-2/8/2018","-22/11/2018","-1/-2/2018",39586,"NA"))数值39586实际上是将excel文件读入R后转换为数字的日期(即11/04/2008)。
通过使用
df$date<-df[is.integer(df$date)] <- NA我尝试将所有整数转换为NA并保留不可信的日期,但date列的所有组件都更改为NA,即
id date
1 1 NA
2 2 NA
3 3 NA
4 4 NA
5 5 NA如何解决这个问题?预期的输出将如下所示
id date
1 1 -2/8/2018
2 2 -22/11/2018
3 3 -1/-2/2018
4 4 NA
5 5 NA其次,如何删除日期后面的减号?我很感谢你在这方面的帮助。
发布于 2019-10-10 12:36:11
我们可以使用gsub将带负号的数字替换为99,然后使用replace将值转换为不遵循日期模式的NA。
df$date <- gsub("-\\d+", "99", df$date)
df$date <- replace(df$date, !grepl("\\d+/\\d+/\\d+", df$date), NA)
df
# id date
#1 1 99/8/2018
#2 2 99/11/2018
#3 3 99/99/2018
#4 4 <NA>
#5 5 <NA>https://stackoverflow.com/questions/58315192
复制相似问题