如何将 R 中的两列与特定符号合并?
Posted
技术标签:
【中文标题】如何将 R 中的两列与特定符号合并?【英文标题】:How to merge two columns in R with a specific symbol? 【发布时间】:2011-07-30 09:21:30 【问题描述】:我有一个用 R 读取的表格,如下所示:
column1 column2
A B
如下将两列匹配在一起的命令是什么?
Column 3
A_B
【问题讨论】:
【参考方案1】:我有点不确定你所说的“合并”是什么意思,但这就是你的意思吗?
> 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
或者等效地,正如@daroczig 指出的那样:
within(DF, C <- paste(A, B, sep='_'))
【讨论】:
要在缺少一个或两个元素的情况下返回 NA,您可以使用ifelse()
语句,如下所示:within(DF, C <- ifelse(is.na(A)==TRUE | is.na(B)==TRUE, NA, paste(A, B, sep='_')))
。
粘贴中有没有办法自动忽略 NA 值?【参考方案2】:
我个人最喜欢在tidyr
中使用unite
:
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
旁注
就我个人而言,我发现 unite 的 remove = TRUE / FALSE
功能非常有用。此外,tidyr
非常适合 dplyr
工作流程,并且可以与 separate
配合使用,以防您改变对要合并的列的想法。同样,如果NA
s 是问题所在,将na.omit
引入您的工作流程将使您能够在创建所需列之前方便地删除不需要的行。
【讨论】:
以上是关于如何将 R 中的两列与特定符号合并?的主要内容,如果未能解决你的问题,请参考以下文章