我在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)
我个人最喜欢的是使用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)
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 / FALSE
unite 的功能非常有用.此外tidyr
,dplyr
还可以很好地完成工作流程,并且separate
在您改变对合并列的想法的情况下也能很好地运行.在同一行中,如果NA
s是引入na.omit
工作流程的问题,则可以在创建所需列之前方便地删除不需要的行.