Слияние и изменение имен столбцов слитых - PullRequest
0 голосов
/ 28 февраля 2019

Как объединить 2 фрейма данных и затем изменить имя столбца слитых.См. Пример ниже.

> DF1
  A    B  C
1 3  axe aa
2 6 base bb
3 9  lol cc

> DF2
  D  E   F
1 6 ss gun
2 3 dd run
3 9 vv fun

> merge(x=DF1,y=DF2, by.x="A",by.y="D",all.x=TRUE)
  A    B  C  E   F
1 3  axe aa dd run
2 6 base bb ss gun
3 9  lol cc vv fun

Мой вопрос заключается в том, как я могу переименовать объединенные E и F в AE и AF. Так и должно быть.

      A  B    C   A.E A.F
      3  axe  aa  dd  run
      6  base bb  ss  gun
      9  lol  cc  vv  fun

1 Ответ

0 голосов
/ 03 марта 2019

Я написал пакет safejoin , который решает это очень кратко.

# devtools::install_github("moodymudskipper/safejoin")
library(safejoin)

eat(DF1, DF2, .by = c(A = "D"), .prefix = "A")
#   A    B  C A_E A_F
# 1 3  axe aa  dd run
# 2 6 base bb  ss gun
# 3 9  lol cc  vv fun

Чтобы получить точно ожидаемый результат, мы можем использовать любую функцию переименования в .prefix аргумент:

eat(DF1, DF2, .by = c(A = "D"), .prefix = ~paste0("A.",.))
#   A    B  C A.E A.F
# 1 3  axe aa  dd run
# 2 6 base bb  ss gun
# 3 9  lol cc  vv fun

eat по умолчанию является расширенным левым соединением, аргумент prefix был разработан специально для удовлетворения таких потребностей, как ваша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...