R 用平均值替换缺少的值
这些是第七列中的值,我想用列平均值替换NAs。我的整个数据集都在变量df中,您可以使用R 用平均值替换缺少的值,r,na,R,Na,这些是第七列中的值,我想用列平均值替换NAs。我的整个数据集都在变量df中,您可以使用 [1] 10 2 4 1 10 10 1 1 1 1 1 3 3 9 1 1 1 10 1 10 7 1 NA 1 7 1 1 1 1 1 1 5 1 1 1 1 1 10 7 NA 3 10 1 1 1 9 [47] 1 1 8 3 4 5 8 8 5 6 1 10 2 3 2 8 2 1 2
[1] 10 2 4 1 10 10 1 1 1 1 1 3 3 9 1 1 1 10 1 10 7 1 NA 1 7 1 1 1 1 1 1 5 1 1 1 1 1 10 7 NA 3 10 1 1 1 9
[47] 1 1 8 3 4 5 8 8 5 6 1 10 2 3 2 8 2 1 2 1 10 9 1 1 2 1 10 4 2 1 1 3 1 1 1 1 2 9 4 8 10 1 1 1 1 1
[93] 1 1 1 1 1 6 10 5 5 1 3 1 3 10 10 1 9 2 9 10 8 3 5 2 10 3 2 1 2 10 10 7 1 10 1 10 1 1 1 10 1 1 2 1 1 1
[139] NA 1 1 5 5 1 NA 8 2 1 10 1 10 5 3 1 10 1 1 NA 10 10 1 1 3 NA 2 10 1 1 1 1 1 1 10 10 10 1 1 1 10 1 1 1 10 10
[185] 1 8 10 8 1 8 10 1 1 1 1 7 1 1 1 10 10 1 1 1 10 5 1 1 1 10 8 1 10 10 5 1 1 4 1 1 10 5 8 10 1 10 5 1 10 7
[231] 8 1 10 1 NA 10 2 9 10 2 1 1 5 1 2 10 9 1 NA 1 10 10 10 8 10 1 1 1 8 10 10 10 10 3 1 10 10 4 1 10 1 10 4 1 NA 1
[277] 1 1 7 1 1 10 10 10 10 10 1 5 10 1 1 NA 10 NA 10 5 NA 1 10 4 1 10 1 10 10 1 1 3 5 1 1 1 1 1 NA 10 8 1 5 10 NA 1
[323] 10 1 1 10 1 4 10 8 1 1 10 10 1 10 1 1 10 10 1 1 1 10 1 1 1 1 8 1 1 3 10 1 1 3 10 4 7 10 10 3 3 1 1 10 10 1
[369] 1 1 1 1 1 1 1 1 1 1 1 1 10 1 1 1 1 10 1 1 2 1 10 1 1 1 1 1 1 1 1 9 1 1 4 1 1 1 1 2 1 1 NA 4 1 10
[415] 3 10 1 2 1 3 10 1 1 1 10 1 2 1 1 1 1 1 1 8 10 1 1 1 1 10 4 3 2 1 1 1 1 1 10 1 1 1 10 1 6 10 3 1 1 1
[461] 5 1 1 1 4 10 10 1 1 1 1 1 1 1 1 1 1 1 10 1 1 5 10 1 3 1 10 3 4 1 10 1 10 5 1 1 1 1 1 1 1 1 1 1 1 5
[507] 4 1 1 1 1 1 1 10 10 1 1 1 10 1 1 5 10 1 1 1 1 1 1 10 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 10 1 1 5 1 1 1
[553] 5 1 1 1 1 1 1 1 1 1 1 1 10 1 3 10 5 10 10 1 1 2 1 1 1 1 1 1 10 10 1 1 1 10 1 3 1 1 10 10 1 10 1 1 1 1
[599] 1 1 1 1 1 10 8 1 1 10 1 10 2 10 1 1 1 1 NA 1 1 1 2 1 1 1 4 6 5 1 1 1 1 1 3 1 1 1 2 1 1 1 1 1 1 1
[645] 1 1 1 2 1 4 1 1 1 1 1 1 1 10 1 1 1 1 1 1 1 1 1 1 5 8 1 1 1 1 1 1 1 1 1 10 10 1 1 1 1 1 1 1 1 1
[691] 5 1 1 2 1 3 4 5
df[is.na(df[,7]),7]尝试以下方法:
df[is.na(df[ , 7]) , 7] <- mean(df[ , 7], na.rm = TRUE)
df[is.na(df[,7]),7]这里有两个问题:
1) 如何获得不包括NA的一组数字的平均值
df[is.na(df[,7]),7]<-mean(df[,7], na.rm=T)
2) 如何用列中的指定值替换NA
Mean = mean(df[, 7], na.rm = TRUE)
df[,7][is.na(df[,7])]还有一种方法可以用replace
给这只猫剥皮:
df[,7][is.na(df[,7])] <- Mean
d提示:df
已经是base R中函数的名称,因此将其用作对象名称并不理想。结果中没有“列”。有一个带有na.rm参数的colMeans
函数。@arvi1000,您预见到的潜在损害是什么?这意味着您不能轻松地使用df函数,如果您愿意的话,而且我认为当在大多数R上下文中通常表示一件事的关键字(如base中的函数)现在表示其他东西时,代码的可读性会降低(就像一个data.frame的名称)。想象一下一个名为sum
或lappy
的data.frame……谢谢你,它现在可以工作了
d <- data.frame(a=1:5, b=c(1,2,NA,4,NA)) # example data
transform(d, b=replace(b, is.na(b), mean(b, na.rm=TRUE)))