Уникальные значения столбцов для комбинации столбцов в R Dataframe - PullRequest
0 голосов
/ 07 марта 2020

Проблема: У меня есть фрейм данных (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

Я хочу результирующий фрейм данных, который выглядел бы как (Я хочу получить уникальные пары из строк 1 и 2 ):

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

То, что я пытался

Я смог получить это до сих пор и не уверен, как поступить отсюда:

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

[1]  TRUE  TRUE  TRUE FALSE  TRUE

1 Ответ

1 голос
/ 07 марта 2020

Мы можем подмножество первых двух строк данных и сделать 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

Используя dplyr, мы можем сделать:

library(dplyr)

df %>%
 slice(1:2) %>%
 t %>%
 as.data.frame() %>%
 group_by(V1) %>%
 summarise(V2 = toString(unique(V2)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...