Оставьте Присоединиться и сохранить уникальные столбцы
Мне нужно слева соединить два 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 столбцов в одном DF.
Я искал, но не мог найти ответы. Любая помощь, пожалуйста
1 ответ
Решение
Простым способом было бы сделать нормальный 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)