【发布时间】:2021-02-17 04:51:25
【问题描述】:
我正在尝试从具有 100 多列的大型数据集中转换特定列中的 NA。单独更换每列的 NA 是不可行的。但是,我只想在列不是日期时这样做,因为当它们是日期时它会出错。
我尝试了以下但没有成功。
library(Hmisc)
library(data.table)
applenames <- which(sapply(appleorigin,class) %nin% "Date")
names(appleorigin[,c(applenames)])
appleorigin[which(is.na(appleorigin)),applenames] <- ""
代码适用于以下reprex。
GroupID Number_of_Apples Date Total_Apples Grocer Farm
1 NA 2000-03-01 NA Henry Applefarms
NA 5 2000-03-01 5 Henry NA
NA NA 2000-03-01 5 Henry Applefarms
1 8 2000-03-01 13 Jane Applefarms
2 2 2000-03-01 2 Henry Hillbasin
3 4 NA 4 Jane Overgrown
3 NA 2000-03-01 5 Julie RedLads
3 1 2000-03-01 6 John Yesteryear
4 2 2000-02-01 NA NA FujiFresh
4 NA 2000-02-01 2 Mai Appleseed
5 NA 2000-01-01 0 Joy Yesteryear
5 0 2000-01-01 0 Mai Applefarms
这是目标:
GroupID Number_of_Apples Date Total_Apples Grocer Farm
1 2000-03-01 Henry Applefarms
5 2000-03-01 5 Henry
2000-03-01 5 Henry Applefarms
1 8 2000-03-01 13 Jane Applefarms
2 2 2000-03-01 2 Henry Hillbasin
3 4 NA 4 Jane Overgrown
3 2000-03-01 5 Julie RedLads
3 1 2000-03-01 6 John Yesteryear
4 2 2000-02-01 FujiFresh
4 2000-02-01 2 Mai Appleseed
5 2000-01-01 0 Joy Yesteryear
5 0 2000-01-01 0 Mai Applefarms
我也尝试将其设为循环,但没有成功。任何帮助将不胜感激。
【问题讨论】:
-
您的数据是
appleorigin还是appleorigins?您能否使用dput编辑您的帖子以包含可复制形式的数据。 (dput(head(appleorigin)))。您确定Date列属于“日期”类吗?看起来它具有阶级性。class(appleorigins$Date)返回什么? -
数据集称为appleorigin。我已将 reprex 中的日期列澄清为类似于上课日期,因为它是上课日期。所有其他列都不属于日期类。