【问题标题】:How to merge two columns in R with a specific symbol?如何将 R 中的两列与特定符号合并?
【发布时间】:2011-07-30 09:21:30
【问题描述】:

我有一个用 R 读取的表格,如下所示:

column1 column2
A        B

如下将两列匹配在一起的命令是什么?

Column 3
A_B

【问题讨论】:

    标签: r merge symbols


    【解决方案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 &lt;- 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 配合使用,以防您改变对要合并的列的想法。同样,如果NAs 是问题所在,将na.omit 引入您的工作流程将使您能够在创建所需列之前方便地删除不需要的行。

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      相关资源
      最近更新 更多