Как объединить два столбца в R с определенным символом? - PullRequest
38 голосов
/ 06 апреля 2011

У меня есть таблица, читаемая в R следующим образом:

column1 column2
A        B

Какую команду использовать для сопоставления двух столбцов следующим образом?

Column 3
A_B

Ответы [ 2 ]

62 голосов
/ 06 апреля 2011

Я немного не уверен, что вы подразумеваете под "слиянием", но вы это имеете в виду?

> DF = data.frame(A = LETTERS[1:10], B = LETTERS[11:20])
> DF$C = paste(DF$A, DF$B, sep="_")
> head(DF)
  A B  C
1 A K A_K
2 B L B_L
3 C M C_M
4 D N D_N

Или эквивалентно, как указывает @daroczig:

 within(DF, C <- paste(A, B, sep='_'))
9 голосов
/ 31 марта 2016

Мой личный фаворит включает использование unite в tidyr:

set.seed(1)
df <- data.frame(colA = sample(LETTERS, 10),
                 colB = sample(LETTERS, 10))
# packs: pipe + unite
require(magrittr); require(tidyr)


# Unite
df %<>%
  unite(ColAandB, colA, colB, remove = FALSE)

Результаты

> head(df, 3)
  ColAandB colA colB
1      G_F    G    F
2      J_E    J    E
3      N_Q    N    Q

Примечания

Лично я нахожу функциональность remove = TRUE / FALSE объединения очень полезной.Кроме того, tidyr очень хорошо запускает рабочий процесс dplyr и хорошо сочетается с separate на тот случай, если вы передумали насчет объединяемых столбцов.В тех же строках, если проблема заключается в NA s, введение na.omit в ваш рабочий процесс позволит вам удобно отбрасывать нежелательные строки перед созданием нужного столбца.

...