【发布时间】:2017-11-30 18:29:23
【问题描述】:
给出下面的示例数据集:
df <- as.data.frame(matrix( c(1, 2, 3, NA, 5, NA,
7, NA, 9, 10, NA, NA), nrow=2, ncol=6))
names(df) <- c( "varA", "varB", "varC", "varD", "varE", "varF")
print(df)
varA varB varC varD varE varF
1 1 3 5 7 9 NA
2 2 NA NA NA 10 NA
我希望能够在数据集上使用 kmeans(...),而无需手动检查或删除在变量中包含 NA anywhere 的变量。虽然我现在正在询问 kmeans(...) 我将对其他事情使用类似的过程,因此 kmeans(...) 特定答案不会完全回答我的问题。
我想要的手动版本是:
kmeans_model <- kmeans(df[, -c(2:4, 6)], 10)
伪代码是:
kmeans_model <- kmeans(df[, -c(colnames(is.na(df)))], 10)
另外,我不想从 df 中删除数据。提前致谢。
(显然 kmeans(...) 不适用于此示例数据集,但我无法重新创建真实数据集)
【问题讨论】:
-
可能是
df[, which(!sapply(df, function(col) sum(!is.na(col)) > 0))] -
@lukeA 使用
any()可能会更容易阅读并且稍微短一些。 (不过可能会慢一些,我得检查一下。) -
@joran 我检查并因此选择了
sum。 ;) -
@lukeA 好吧,给你! :)
标签: r missing-data na