web-dev-qa-db-fra.com

Comment fusionner deux colonnes en R avec un symbole spécifique?

J'ai un tableau lu en R comme suit:

column1 column2
A        B

Quelle est la commande à utiliser pour faire correspondre deux colonnes comme suit?

Column 3
A_B
38
Catherine

Je ne sais pas trop ce que vous entendez par "fusionner", mais est-ce ce que vous voulez dire?

> 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

Ou de manière équivalente, comme le souligne @daroczig:

 within(DF, C <- paste(A, B, sep='_'))
62
csgillespie

Mon préféré consiste à utiliser unite dans 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)

Résultats

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

Notes annexes

Personnellement, je trouve le remove = TRUE / FALSE fonctionnalité d'unir très utile. De plus, tidyr déclenche très bien le flux de travail dplyr et joue bien avec separate au cas où vous changeriez d'avis sur les colonnes fusionnées. Sur les mêmes lignes, si NAs pose problème lors de l'introduction de na.omit à votre flux de travail vous permettrait de supprimer facilement les lignes indésirables avant de créer la colonne souhaitée.

9
Konrad