【问题标题】:Add back NAs after removing them移除 NA 后重新添加它们
【发布时间】:2012-08-17 21:12:04
【问题描述】:

R 中的许多操作都需要从数据集中删除 NA。就我而言,我想使用 kmeans 将连续测量分为三个因素:

kmeans.2006<-kmeans(na.omit(media.2006), 3)

这显然会创建一个与 media.2006 长度不同的向量。我想要做的是将此向量替换为 media.2006 (或相同长度的新向量)。我想我想做的是写一个类似下面的循环,但告诉计数器跳过任何 NA。

kmeans.2006<-kmeans(na.omit(media.2006), 3)

n <- length(media.2006)
k <- length(kmeans.2006)

media.factor.2006 <- rep(NA, n)

for(i in 1:n){
 for(j in 1:k){
media.factor[i] <- ifelse(is.na(media.2006[i]) != TRUE, kmeans.2006[j], media.2006[i])
 }
}

需要明确的是,这不起作用,但我想像这样的事情会起作用,如果我可以告诉 j-counter 跳过 i-counter 遇到(请原谅双关语)NA的情况。有什么想法吗?

作为参考,我有:

> dput(media.2006)
c(NA, NA, NA, 0L, 0L, 0L, 385L, 0L, 51L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 47L, 20L, NA, 0L, 16L, 116L, 84L, 20L, NA, 0L, 3L, 
28L, 940L, 741L, 177L, 984L, 0L, 27L, 19L, 294L, 79L, 1L, 17L, 
152L, 35L, 87L, 946L, 0L, 0L, 0L, 27L, 10L, 9L, 395L, 25L, 0L, 
0L, 0L, 0L, 58L, 1198L, 0L, 0L, 0L, NA, 19L, 0L, 19L, 2L, 0L, 
2L, 25L, 0L, 0L)

【问题讨论】:

    标签: r


    【解决方案1】:

    这比你想象的要容易。

    media.factor.2006 <- rep(NA, length(media.2006))
    media.factor.2006[!is.na(media.2006)] <- kmeans.2006$cluster
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 2018-02-04
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多