Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用平均值替换缺少的值_R_Na - Fatal编程技术网

R 用平均值替换缺少的值

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

这些是第七列中的值,我想用列平均值替换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  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)))