【发布时间】:2019-10-10 03:48:20
【问题描述】:
此问题与由缺失值、日期和一些在日期和/或月份之前带有负号的不可信日期组成的数据框有关。我使用代码将excel文件中的数据读入R
df <- data.frame(read_excel("dat.xlsx", col_types = c("numeric", "guess")))
这会将日期更改为数值。当然,如果我想获取日期,可以将上面代码中的“guess”替换为“date”。但是,我想获得难以置信的日期并用 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实际上是一个日期(即11/04/2008),将excel文件读入R后转换为数值。
配合使用
df$date<-df[is.integer(df$date)] <- NA
我尝试将所有整数转换为 NA 并保留不可信的日期,但日期列的所有组件都更改为 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
其次,如何删除附在日期上的减号?感谢您在这方面的帮助。
【问题讨论】:
-
您真的有来自 Excel 的负日期吗?
-
@TimBiegeleisen 是的,负日期来自 Excel。与日期和月份相关的否定表示这些日期和月份是未知的。
-
缺少的日期/月份是否会取消该日期的资格,或者您是否希望使用一些默认值来代替未知值?
-
您可以通过
replace(df$date, !grepl('-?\\d+/-?\\d+/\\d+', df$date), NA)或删除负号replace(gsub("-", "", df$date), !grepl('-?\\d+/-?\\d+/\\d+', df$date), NA)来获得预期的输出,但这对您有用吗? -
gsub("-\\d{1,2}", "99", df$date).