这可能是一个简单的问题,但我尝试了一些事情而且他们没有工作。 我有一个包含日期/时间格式的大型数据框。我的数据框的一个例子是:
Index FixTime1 FixTime2
1 2017-05-06 10:11:03 NA
2 NA 2017-05-07 11:03:03
我想从数据框中删除所有NAs并使它们成为"" (空白)。我试过了:
df[is.na(df)]<-""
但这会产生错误:
Error in as.POSIXlt.character(value) :
character string is not in a standard unambiguous format
同样,这可能很容易修复,但无法找到如何执行此操作,同时保留每个列的时间/日期格式
答案 0 :(得分:1)
这是玩具数据集的可能解决方案,根据您的需求调整此代码:
df<-data.frame(date=c("01/01/2017",NA,"01/02/2017"))
df
date
1 01/01/2017
2 <NA>
3 01/02/2017
从因素到字符,然后删除NA
df$date <- as.character(df$date)
df[is.na(df$date),]<-""
df
date
1 01/01/2017
2
3 01/02/2017
在您的具体示例中,这可能没问题:
df_2<-data.frame(Index=c(1,2),
+ FixTime1=c("2017-05-06 10:11:03",NA),
+ FixTime2=c(NA,"2017-05-07 11:03:03"))
df_2<-data.frame(lapply(df_2, as.character), stringsAsFactors=FALSE)
df_2[is.na(df_2$FixTime1),"FixTime1"]<-""
df_2[is.na(df_2$FixTime2),"FixTime2"]<-""
df_2
Index FixTime1 FixTime2
1 1 2017-05-06 10:11:03
2 2 2017-05-07 11:03:03
答案 1 :(得分:1)
我们可以使用replace
df[] <- replace(as.matrix(df), is.na(df), "")
df
# Index FixTime1 FixTime2
#1 1 2017-05-06 10:11:03
#2 2 2017-05-07 11:03:03