r语言 - 在Rstudio中用空格替换某些类类型的NAs



我正在尝试从具有100+列的大型数据集转换特定列中的NAs。为每列单独替换NAs是不可行的。但是,我只想在列不是日期的情况下这样做,因为当它们是日期时它会出错。

我尝试了以下方法,但没有成功。

library(Hmisc)
library(data.table)
applenames <- which(sapply(appleorigin,class) %nin% "Date")
names(appleorigin[,c(applenames)])
appleorigin[which(is.na(appleorigin)),applenames] <- ""

该代码适用于以下表达式。

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

我也试着让这个循环,但是没有成功。如有任何帮助,不胜感激。

您可以使用:

cols <- !sapply(appleorigin,function(x) "Date" %in% class(x))
appleorigin[cols][is.na(appleorigin[cols])] <- ''
#   GroupID Number_of_Apples       Date Total_Apples Grocer       Farm
#1        1                  2000-03-01               Henry Applefarms
#2                         5 2000-03-01            5  Henry           
#3                           2000-03-01            5  Henry Applefarms
#4        1                8 2000-03-01           13   Jane Applefarms
#5        2                2 2000-03-01            2  Henry  Hillbasin
#6        3                4       <NA>            4   Jane  Overgrown
#7        3                  2000-03-01            5  Julie    RedLads
#8        3                1 2000-03-01            6   John Yesteryear
#9        4                2 2000-02-01                      FujiFresh
#10       4                  2000-02-01            2    Mai  Appleseed
#11       5                  2000-01-01            0    Joy Yesteryear
#12       5                0 2000-01-01            0    Mai Applefarms

appleorigin <- structure(list(GroupID = c(1L, NA, NA, 1L, 2L, 3L, 3L, 3L, 4L, 
4L, 5L, 5L), Number_of_Apples = c(NA, 5L, NA, 8L, 2L, 4L, NA, 
1L, 2L, NA, NA, 0L), Date = structure(c(11017, 11017, 11017, 
11017, 11017, NA, 11017, 11017, 10988, 10988, 10957, 10957), class = "Date"), 
Total_Apples = c(NA, 5L, 5L, 13L, 2L, 4L, 5L, 6L, NA, 2L, 
0L, 0L), Grocer = c("Henry", "Henry", "Henry", "Jane", "Henry", 
"Jane", "Julie", "John", NA, "Mai", "Joy", "Mai"), Farm = c("Applefarms", 
NA, "Applefarms", "Applefarms", "Hillbasin", "Overgrown", 
"RedLads", "Yesteryear", "FujiFresh", "Appleseed", "Yesteryear", 
"Applefarms")), row.names = c(NA, -12L), class = "data.frame")

最新更新