gpt4 book ai didi

r - 在 R 中使用 is.na 获取包含 NA 值的列名

转载 作者:行者123 更新时间:2023-12-05 09:22:40 25 4
gpt4 key购买 nike

给定以下示例数据集:

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(...) 不适用于此示例数据集,但我无法重新创建真实数据集)

最佳答案

这里有两个没有sapply的选项:

kmeans_model <- kmeans(df[, !colSums(is.na(df))], 10) 

或者

kmeans_model <- kmeans(df[, colSums(is.na(df)) == 0], 10) 

说明:

colSums(is.na(df)) 计算每列 NA 的数量,结果是:

colSums(is.na(df))
#varA varB varC varD varE varF
# 0 1 1 1 0 2

然后

colSums(is.na(df)) == 0     # converts to logical TRUE/FALSE
#varA varB varC varD varE varF
#TRUE FALSE FALSE FALSE TRUE FALSE

相同
!colSums(is.na(df))
#varA varB varC varD varE varF
#TRUE FALSE FALSE FALSE TRUE FALSE

这两种方法都可用于仅对逻辑值为 TRUE 的列进行子集化

关于r - 在 R 中使用 is.na 获取包含 NA 值的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25188051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com