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分别更新了代码。现在他只不过是一个年轻人