简体   繁体   English

R Dataframe 中列组合的唯一列值

[英]Unique column values on a combination of columns in R Dataframe

Problem: I have a dataframe (df)问题:我有一个数据框 (df)

    Source  Source1  Target   Target.1 Target.2 Target.3
1   SDB1    SDB2     TDB1     TDB2     TDB2     TDB2
2   STB1    STB2     TTB1     TTB2     TTB2     TTB3
3   SCOL1   SCOL2    TCOL1    TCOL2    TCOL3    TCOL4

I want a resultant dataframe which would look like (What I want is to get Unique pairs from rows 1 and 2):我想要一个看起来像的结果数据框(我想要的是从第 1 行和第 2 行获取唯一对):

X1    X2
SDB1  STB1
SDB2  STB2
TDB1  TTB1
TDB2  TTB2,TTB3

What I tried我试过的

I was able to get this till now and not sure how to proceed from here:直到现在我都能得到这个,但不知道如何从这里开始:

!(duplicated(t(df[c(1,2),])))

[1]  TRUE  TRUE  TRUE FALSE  TRUE

We can subset first two rows of dataframe and do aggregate我们可以对数据帧的前两行进行子集化并进行aggregate

df1 <- as.data.frame(t(df[1:2, ]), row.names = FALSE)
names(df1) <- paste0('X', 1:2)
aggregate(X2~X1, df1, function(x) toString(unique(x)))

#    X1         X2
#1 SDB1       STB1
#2 SDB2       STB2
#3 TDB1       TTB1
#4 TDB2 TTB2, TTB3

Using dplyr , we can do :使用dplyr ,我们可以:

library(dplyr)

df %>%
 slice(1:2) %>%
 t %>%
 as.data.frame() %>%
 group_by(V1) %>%
 summarise(V2 = toString(unique(V2)))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM