【发布时间】:2015-12-22 22:58:10
【问题描述】:
我想用同一列的平均值替换 DATA TABLE 列中存在的 NA。我正在做以下事情。但它不起作用。
ww <- data.table(iris)
ww <- ww[1:5 , ]
ww[1,1] <- NA
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1: NA 3.5 1.4 0.2 setosa
2: 4.9 3.0 1.4 0.2 setosa
3: 4.7 3.2 1.3 0.2 setosa
4: 4.6 3.1 1.5 0.2 setosa
5: 5.0 3.6 1.4 0.2 setosa
ww[is.na(Sepal.Length) , Sepal.Length:= mean(Sepal.Length, na.rm = T)]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1: NaN 3.5 1.4 0.2 setosa
2: 4.9 3.0 1.4 0.2 setosa
3: 4.7 3.2 1.3 0.2 setosa
4: 4.6 3.1 1.5 0.2 setosa
5: 5.0 3.6 1.4 0.2 setosa
为什么我用 NaN 代替 NA 而它应该是其余值(4.9、4.7、4.6、5.0)的平均值?
如果这种语法有问题,有什么替代方法可以实现?
我想要数据表的语法。
【问题讨论】:
-
问题是您首先要对数据集进行子集化,然后将操作应用于
Sepal.Length列,此时该列仅包含一个NA。 -
@AkhilNair 没有找到你。可以举个例子吗?
-
@RHertel 您的解决方案正在替换整个列,而不仅仅是 NA。
-
为什么要用平均值替换缺失值?对于您要解决的问题,可能有更好的解决方案。
标签: r data.table