我正在尝试用相似组的平均值替换数据中的某些缺失值。
我的数据如下所示:
X Y
1 x y
2 x y
3 NA y
4 x y
我希望它看起来像这样:
X Y
1 x y
2 x y
3 y y
4 x y
我写了这个,它奏效了
for(i in 1:nrow(data.frame){
if( is.na(data.frame$X[i]) == TRUE){
data.frame$X[i] <- data.frame$Y[i]
}
}
但是我的data.frame几乎有一百万行长,并且for/if语句非常慢。我想要的是类似的东西
is.na(data.frame$X) <- data.frame$Y
但这会导致大小不匹配的错误。似乎应该有一个执行此操作的命令,但是我在SO或R帮助列表上找不到它。有任何想法吗?
最佳答案
ifelse
是你的 friend 。
使用Dirk的数据集
df <- within(df, X <- ifelse(is.na(X), Y, X))
关于R:用向量中的项替换NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684695/