R 将两对列合并为具有唯一值的两列

R 将两对列合并为具有唯一值的两列,r,R,我的数据框架如下: from<-c("Jack","Bill","Jack","Adam") to<-c("Lary","Jack","Tom","Lary") from_group<-c("A","A","A","C") to_group&

我的数据框架如下:

from<-c("Jack","Bill","Jack","Adam")
to<-c("Lary","Jack","Tom","Lary")
from_group<-c("A","A","A","C")
to_group<-c("B","A","D","B")
A<-data.frame(from,to,from_group,to_group)

  from   to from_group to_group
1 Jack Lary          A        B
2 Bill Jack          A        A
3 Jack  Tom          A        D
4 Adam Lary          C        B
库(data.table)
L
库(data.table)

L您可以将
unique
unlist

unique(data.frame(names=unlist(A[1:2]), groups=unlist(A[3:4])))
#      names groups
#from1  Jack      A
#from2  Bill      A
#from4  Adam      C
#to1    Lary      B
#to3     Tom      D
或不带行名:

unique(data.frame(names=unlist(A[1:2], use.names = FALSE),
                  groups=unlist(A[3:4], use.names = FALSE)))
#  names groups
#1  Jack      A
#2  Bill      A
#4  Adam      C
#5  Lary      B
#7   Tom      D
或者使用这个名字

i <- endsWith(names(A), "_group")
unique(data.frame(names=unlist(A[!i]), groups=unlist(A[i])))

i您可以将
unique
unlist

unique(data.frame(names=unlist(A[1:2]), groups=unlist(A[3:4])))
#      names groups
#from1  Jack      A
#from2  Bill      A
#from4  Adam      C
#to1    Lary      B
#to3     Tom      D
或不带行名:

unique(data.frame(names=unlist(A[1:2], use.names = FALSE),
                  groups=unlist(A[3:4], use.names = FALSE)))
#  names groups
#1  Jack      A
#2  Bill      A
#4  Adam      C
#5  Lary      B
#7   Tom      D
或者使用这个名字

i <- endsWith(names(A), "_group")
unique(data.frame(names=unlist(A[!i]), groups=unlist(A[i])))

i我们可以使用
pivot\u longer
来重新塑造为“long”格式,并使用
distinct

library(dplyr)
library(tidyr)
library(stringr)
A %>% 
   rename_at(vars('from', 'to'), ~ str_c(., "_names")) %>%
   pivot_longer(cols = everything(), names_sep = "_", 
       names_to = c("grp", ".value")) %>%
   distinct(names, group)
# A tibble: 5 x 2
#  names group
#  <chr> <chr>
#1 Jack  A    
#2 Lary  B    
#3 Bill  A    
#4 Tom   D    
#5 Adam  C    
库(dplyr)
图书馆(tidyr)
图书馆(stringr)
A%>%
重命名为(vars('from','to'),~str_c(,“'u names”))%>%
pivot_longer(cols=everything(),names_sep=“u”,
名称_to=c(“grp”、“.value”)%>%
不同(名称、组)
#一个tibble:5x2
#名称组
#   
#杰克A
#2拉里B酒店
#3法案A
#4汤姆·D
#5亚当C

我们可以使用
pivot\u longer
来重新塑造为“long”格式,并使用
distinct

library(dplyr)
library(tidyr)
library(stringr)
A %>% 
   rename_at(vars('from', 'to'), ~ str_c(., "_names")) %>%
   pivot_longer(cols = everything(), names_sep = "_", 
       names_to = c("grp", ".value")) %>%
   distinct(names, group)
# A tibble: 5 x 2
#  names group
#  <chr> <chr>
#1 Jack  A    
#2 Lary  B    
#3 Bill  A    
#4 Tom   D    
#5 Adam  C    
库(dplyr)
图书馆(tidyr)
图书馆(stringr)
A%>%
重命名为(vars('from','to'),~str_c(,“'u names”))%>%
pivot_longer(cols=everything(),names_sep=“u”,
名称_to=c(“grp”、“.value”)%>%
不同(名称、组)
#一个tibble:5x2
#名称组
#   
#杰克A
#2拉里B酒店
#3法案A
#4汤姆·D
#5亚当C

为什么Jack不在A组和B组?很抱歉,只有AI分别更新了代码。现在他只是问为什么杰克不在A组和B组?对不起,他只是AI分别更新了代码。现在他只不过是一个年轻人