R - 按相关分组,删除重复并将帧放回去?

时间:2016-07-08 08:16:20

标签: r dataframe duplicates grouping correlation

VarA和VarB colomn是完全共线变量的输出,我想将变量分组并删除基于VarB的重复组合(例如:D,A相互关联,我想要在最终输出中保留两个组合中的一个)

VarA <- c('G','D','A','X','E','D','A','X','E','Z','Q')
VarB <- c('H','D','D','E','E','A','A','X','X','Z','Z')
corrout <- as.data.frame(cbind(VarA,VarB))

VarA      VarB
 G          H
 D          D
 A          D
 X          E
 E          E
 D          A
 A          A
 X          X
 E          X
 Z          Z
 Q          Z

下面显示的所需内容基于VarB,并且在上面已经列出的VarB的输出A,A和X,X组合中删除了两个重复项。

DESIRED OUTPUT

GROUP1 - G
GROUP2 - D,A
GROUP3 - X,E
GROUP4 - Z,Q

希望有人能够帮助我做一个简单的功能!!非常感谢..

2 个答案:

答案 0 :(得分:1)

我们可以尝试

library(data.table)
unique(setDT(corrout)[, toString(unique(VarA)) , VarB], by = "V1")[,
         VarB := paste0("Group", 1:.N)][]
#      VarB   V1
# 1: Group1    G
# 2: Group2 D, A
# 3: Group3 X, E
# 4: Group4 Z, Q

答案 1 :(得分:0)

以下作品:

删除两个变量相同的行:

ViewCount

按行排序变量:

> c2 = corrout[corrout$VarA != corrout$VarB,] 
> c2
   VarA VarB
1     G    H
3     A    D
4     X    E
6     D    A
9     E    X
11    Q    Z

删除重复项:

> c3 = data.frame(t(apply(c2, 1, function(x) sort(x))))
> c3
   X1 X2
1   G  H
3   A  D
4   E  X
6   A  D
9   E  X
11  Q  Z