【问题标题】:Opposite of tidyr::separate, concatenating multiple columns into onetidyr::separate 的对面,将多列连接为一列
【发布时间】:2016-11-18 18:12:24
【问题描述】:

我有一个数据框:

df <- data.frame(
    id = c(1, 2, 3),
    `1` = c("W4", "W5", 49),
    `2` = c("L", "O1", "P6"),
    `3` = c(1, 2, 10),
    `4` = c("H7", NA, "K"),
    `5` = c("J8", NA, NA)
)

如何将列与sep = "," 连接/粘贴在一起

(我猜是 tidyr::separate() 的反面?)

期望的输出:

id  string
1   W4, L, 1, H7, J8
2   W5, O1, 2
3   49, P6, 10, K

提前致谢!

编辑

我对使用 paste 持谨慎态度,因为在我的真实数据集中我有 1000 列。

【问题讨论】:

    标签: r dplyr tidyr


    【解决方案1】:

    您可以使用tidyr 中的unite 函数:

    library(tidyr)
    unite(df, string, X1:X5, sep = ", ")
    #  id            string
    #1  1  W4, L, 1, H7, J8
    #2  2 W5, O1, 2, NA, NA
    #3  3 49, P6, 10, K, NA
    

    请注意,它还有一个remove 参数,默认为TRUE。如果将其设置为FALSE,则原始列将保留在数据中。

    对于列规范(要合并哪些列),您可以像我在上面所做的那样使用冒号运算符 (:) 或使用 ?dplyr::select 中描述的特殊函数。

    【讨论】:

    • 正是我需要的!我很尴尬,我不知道团结。直到。
    【解决方案2】:

    我们可以在base R 中做到这一点,无需任何包

    data.frame(id = df[1], string= do.call(paste, c(df[-1], sep=",")))
    #  id        string
    #1  1  W4,L,1,H7,J8
    #2  2 W5,O1,2,NA,NA
    #3  3 49,P6,10,K,NA
    

    【讨论】:

    • 我喜欢你的解决方案,很好
    • @Learner 感谢您的评论
    【解决方案3】:

    另一种方法是:

    mdf <- df %>% transform(strings=paste(X1,X2,X3,X4,X5, sep = ","))
    mydf <- mdf[,c(1,7)]
    > mydf
    #  id       strings
    #1  1  W4,L,1,H7,J8
    #2  2 W5,O1,2,NA,NA
    #3  3 49,P6,10,K,NA
    

    【讨论】:

      【解决方案4】:

      这是另一个使用“unite”的示例,它与“separate”相反...

      从以下数据框 df 开始,它有 3 列(“年”、“月”和“日”):

      df
      
        year  month day          
      
      1 2009  01    01    
      

      如果我们想将“年”、“月”和“日”列连接成一个名为“时间”的列,使用连字符作为分隔符,我们可以使用 unite:

      df %>% unite(time,c("year","month","day"),sep="-")
      
      
        time     
      
      1 2009-01-01
      

      【讨论】:

        猜你喜欢
        • 2015-05-11
        • 2017-07-16
        • 2019-08-12
        • 1970-01-01
        • 2016-12-02
        • 1970-01-01
        • 2019-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多