How to merge two columns in R with a specific symbol?
I have a开发者_开发技巧 table read in R as follows:
column1 column2
A B
What is the command to be used to match two columns together as follows?
Column 3
A_B
I'm a bit unsure what you mean by "merge", but is this what you mean?
> 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
Or equivalently, as @daroczig points out:
within(DF, C <- paste(A, B, sep='_'))
My personal favourite involves making use of the unite
in 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)
Results
> head(df, 3)
ColAandB colA colB
1 G_F G F
2 J_E J E
3 N_Q N Q
Side notes
Personally, I find the remove = TRUE / FALSE
functionality of unite very useful. In addition tidyr
firs the dplyr
workflow very well and plays well with separate
in case you change your mind about the columns being merged. On the same lines, if NA
s are the problem introducing na.omit
to your workflow would enable you to conveniently drop the undesirable rows before creating the desired column.
精彩评论