我正在为 4000 个变量的数据框做一个相关矩阵,我想删除显示 > 0.5 相关性的变量,所以我使用 {caret} 包中的这个命令。
removeme <- findCorrelation(corrMatrix, cutoff = 0.5, verbose = FALSE)
Error in if (mean(x[i, -i]) > mean(x[-j, j])) { :
missing value where TRUE/FALSE needed
我拥有的数据是高度可变的,我在这里和那里得到 NA 值。首先,我在这个命令的帮助页面上找不到可以处理 NA 值的东西,所以我决定自己删除 NA 值。
有些变量在整个数据中一直显示 NA 值,有些则显示很少的 NA 值。我正在尝试删除导致任何 NA 值的变量,以便能够使用上述命令。这是我的数据看起来像的最小示例
dput(df) <- structure(list(GK = 1:10, HGF = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L), HJI = c(2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
HDF = c(5L, 6L, 8L, 9L, 5L, 2L, 4L, 3L, 2L, 1L), KLJG = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), KLJA = c(0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L), KDA = c(10L, 11L, 15L, 18L,
11L, 10L, 10L, 15L, 12L, 13L), OIE = c(NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA), AFE = c(0L, 0L, 0L, 1L, 0L, 0L, NA,
NA, NA, NA)), .Names = c("GK", "HGF", "HJI", "HDF", "KLJG",
"KLJA", "KDA", "OIE", "AFE"), class = "data.frame", row.names = c(NA,
-10L))
corrMatrix <- cor(df,use="pairwise.complete.obs")
摆脱这些烦人的变量的最佳主意是什么?我尝试了许多命令,但没有找到一个可以摆脱这些变量的理想命令。这是我的试验之一:
removeme <- corrMatrix[,which(as.numeric(rowSums(is.na(corrMatrix))) > 100)]
此命令的问题是,如果有超过 100 个错误变量(在相关矩阵中给出 NA),则将删除正常变量,因为正常变量的列将具有 > 100 个 NA 值。
我希望这个编辑让我的问题更清楚。干杯。