R - 按相关性分组,删除重复项并将框架放回去?
R - Group by correlation, remove duplicate and put the frame back?
VarA和VarB列是完全共线的变量输出,我想将变量分组并根据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
希望有人能帮我解决这个问题!!非常感谢..
我们可以试试
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
以下作品:
删除两个变量相同的行:
> 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
删除重复项:
> c3[!duplicated(c3), ]
X1 X2
1 G H
3 A D
4 E X
11 Q Z
VarA和VarB列是完全共线的变量输出,我想将变量分组并根据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
希望有人能帮我解决这个问题!!非常感谢..
我们可以试试
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
以下作品:
删除两个变量相同的行:
> 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
删除重复项:
> c3[!duplicated(c3), ]
X1 X2
1 G H
3 A D
4 E X
11 Q Z