Оставьте Присоединиться и сохранить уникальные столбцы - PullRequest
0 голосов
/ 03 октября 2018

Мне нужно присоединиться слева к двум df (X1 и X2) и оставить только уникальные столбцы.

Приведенный ниже код работает, если мне нужно сделать обычное объединение:

merge(X1,  X2)

Пример данных :

X1<- data.frame("Group.Name"=c("Group1","Group2","Group1","Group2","Group2","Group2","Group1"),
                     "Sub_group_name"=c("A","A","B","C","D","E","B"),
                      "new_col"=c("Aa","Aa","Ba","Ca","Da","Ea","Ba"),
                     "Total"=c(35,26,10,9,5,11,13))

X2<- data.frame("Group.Name"=c("Group1","Group2","Group1","Group2","Group2"),
                "Sub_group_name"=c("A","A","B","C","D"),
                "new_col_b"=c(351,261,101,91,51),
                "Total_b"=c(35,26,10,9,5))

Пример запроса :

Merge column -> Group.Name
merged dataframe columns -> Group.Name,Sub_group_name,new_col,new_col_b,Total_b

Приведенный ниже код дает мне также все повторяющиеся столбцы:

merge(x=X1,y=X2,by=c,all.x=TRUE)

Я также не могу указать имена отдельных столбцов, поскольку у меня более 100 столбцов в одном файле.

Я искал, но не смог найти ответы.Любая помощь, пожалуйста

1 Ответ

0 голосов
/ 03 октября 2018

Простым способом было бы сделать обычный merge, затем просто удалить лишние столбцы из X2 и удалить .x из любых имен.

out <- merge(x=X1,y=X2,by='c',all.x=TRUE)

# remove columns from X2
out <- out[!endsWith(names(out), '.y')]
# rename columns from X1
library(magrittr)
names(out)[endsWith(names(out), '.x')] %<>% substr(1, nchar(.) - 2)

out
#   c a b d e
# 1 1 1 2 1 1

Используемые данные:

X1 <- data.frame(a = 1, b = 2, c = 1, d = 1)
X2 <- data.frame(b = 1, c = 1, e = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...