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
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='_'))
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)
> head(df, 3)
ColAandB colA colB
1 G_F G F
2 J_E J E
3 N_Q N Q
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 NA
s 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.