我有一个巨大的数据帧5600 X 6592,我想删除任何相互关联超过0.99的变量.我知道如何一步一步地完成这项工作,即形成一个相关矩阵,对值进行舍入,删除类似的值,并使用索引再次获得我的"简化"数据.
cor(mydata)
mydata <- round(mydata,2)
mydata <- mydata[,!duplicated (mydata)]
## then do the indexing...
我想知道,这是否可以在短时间内完成,或一些先进的功能.我正在学习如何使用R语言中的强大工具,它可以避免这么长时间不必要的命令
我在想
mydata <- mydata[, which(apply(mydata, 2, function(x) !duplicated(round(cor(x),2))))]
抱歉,我知道上面的命令不起作用,但我希望我能做到这一点.
适用于以下问题的播放数据:
mydata <- structure(list(V1 = c(1L, 2L, 5L, 4L, 366L, 65L, 43L, 456L, 876L,
78L, 687L, 378L, 378L, 34L, 53L, 43L), V2 = c(2L, 2L, 5L, 4L,
366L, 65L, 43L, 456L, 876L, 78L, 687L, 378L, 378L, 34L, 53L,
41L), V3 = c(10L, 20L, 10L, 20L, 10L, 20L, 1L, 0L, 1L, 2010L,
20L, 10L, 10L, 10L, 10L, 10L), V4 = c(2L, 10L, 31L, 2L, 2L, 5L,
2L, 5L, 1L, 52L, 1L, 2L, 52L, 6L, 2L, 1L), V5 = c(4L, 10L, 31L,
2L, 2L, 5L, 2L, 5L, 1L, 52L, 1L, 2L, 52L, 6L, 2L, 3L)), .Names = c("V1",
"V2", "V3", "V4", "V5"), class = "data.frame", row.names = c(NA,
-16L))
非常感谢