如何将R中的两列与特定符号合并?

Cat*_*ine 39 merge symbols r

我在R中读了一个表如下:

column1 column2
A        B
Run Code Online (Sandbox Code Playgroud)

用于将两列匹配的命令是什么,如下所示?

Column 3
A_B
Run Code Online (Sandbox Code Playgroud)

csg*_*pie 63

我有点不确定你的意思是"合并",但这是你的意思吗?

> 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
Run Code Online (Sandbox Code Playgroud)

或者等效地,正如@daroczig所指出的那样:

 within(DF, C <- paste(A, B, sep='_'))
Run Code Online (Sandbox Code Playgroud)


Kon*_*rad 9

我个人最喜欢的是使用unitein 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)
Run Code Online (Sandbox Code Playgroud)

结果

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

旁注

就个人而言,我发现remove = TRUE / FALSEunite 的功能非常有用.此外tidyr,dplyr还可以很好地完成工作流程,并且separate在您改变对合并列的想法的情况下也能很好地运行.在同一行中,如果NAs是引入na.omit工作流程的问题,则可以在创建所需列之前方便地删除不需要的行.