r - 如何删除r中的相关或重复变量或个体

标签 r dataframe

我有以下类型(但是非常多的变量和 ind)数据:

    mydf <- data.frame (Inv = 1:6, varA = c(1,1,1,  0,1,1),
   varB = c(1,0,1,  0, 1,1), varC = c(1,0,0,  0,1,1), varD = c(1,1,1,  0,1,1), 
     varE = c(1,0,1,  0, 1,1), varF = c(1,1,1,  0, 1,1))

mydf
  Inv varA varB varC varD varE varF
1   1    1    1    1    1    1    1
2   2    1    0    0    1    0    1
3   3    1    1    0    1    1    1
4   4    0    0    0    0    0    0
5   5    1    1    1    1    1    1
6   6    1    1    1    1    1    1

我想进行所有一对一的比较(变量和个人/主题),如果它们是重复的,并且重复的个人/变量的名称作为日志保存到不同的文件中,则只保留一个:

例如在上面的数据中:

在变量中:
varA is exactly same as varD and varF - so I will just keep varA only in new data

mydf$varA == mydf$varE
[1]  TRUE TRUE  TRUE  TRUE  TRUE  TRUE

varB and varE has exactly same data - so I will just keep varB
varC is unique

在 Inv(即主题)中:
1, 5 and 6 are same  -> so just keep 1

因此产生的输出文件是
        mydf <- data.frame (Inv = 1:4, varA = c(1,1,1,  0),
       varB = c(1,0,1,  0), varC = c(1,0,0,  0))
  Inv varA varB varC
1   1    1    1    1
2   2    1    0    0
3   3    1    1    0
4   4    0    0    0

我可以通过相关矩阵找到重复:
cor(mydf[,-1])
          varA      varB      varC      varD      varE      varF
varA 1.0000000 0.6324555 0.4472136 1.0000000 0.6324555 1.0000000
varB 0.6324555 1.0000000 0.7071068 0.6324555 1.0000000 0.6324555
varC 0.4472136 0.7071068 1.0000000 0.4472136 0.7071068 0.4472136
varD 1.0000000 0.6324555 0.4472136 1.0000000 0.6324555 1.0000000
varE 0.6324555 1.0000000 0.7071068 0.6324555 1.0000000 0.6324555
varF 1.0000000 0.6324555 0.4472136 1.0000000 0.6324555 1.0000000

我们可以自动化这个过程吗?

最佳答案

您也可以使用 findCorrelation 来自 caret包裹:

findCorrelation(x, cutoff = .90, verbose = FALSE)

其中输出是表示要删除的列的索引向量。

关于r - 如何删除r中的相关或重复变量或个体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10802592/

相关文章:

用累积和 reshape data.table

从 R 中的 .sdf 文件中提取唯一字段的正则表达式

python - 您如何为加权平均平均值迭代地为数据框列赋予权重?

r - 将指定的列转置为具有分组数据的行

r - 提取两个重叠栅格的数据

python - 展开 PySpark DataFrame 的数组列

python - groupby 结果数据帧连接

r - 在 ggpmisc 和 ggplot 中使用 stat_fit_tb() 时编辑表格显示的*行*名称

r - 将函数应用于循环中的所有行并将结果放入新列中

windows - 在 Windows R 中设置主目录