【问题标题】:R: Splitting dataframe columnwiseR:按列拆分数据框
【发布时间】:2016-06-27 13:35:25
【问题描述】:

我有一个具有这种结构的数据框

x = data.frame(let = letters, LET = LETTERS, num1 = 1:26, num2 = 21:46, num3 = 71:96, num4 = 68:93 )

我想将其拆分为 3 列数据框的列表。前两列 letLET 保持通用,第三列各不相同。第一个数据帧是 (let, LET, num1),第二个数据帧是 (let, LET, num2),依此类推。

我目前的策略是将数据帧转换为长格式,并使用 plyr 和 dplyr 包根据 num 对其进行拆分。有没有更简单的方法来完成这项任务。

【问题讨论】:

    标签: r split dataframe subset


    【解决方案1】:

    这是一个基于Map 的方法

    Map(function(x,y,z) setNames(cbind(x,y), c(names(x), z)), 
                list(x[1:2]), x[-(1:2)], names(x)[-(1:2)])
    

    【讨论】:

      【解决方案2】:

      您可以像这样使用lapply 作为您的示例

      lapply(1:4, function(D) x[ ,c("let", "LET", paste0("num", D))])
      

      如果您不知道您可以使用的 num* 列的列名

      nonLetNames <- names(x)[!(names(x) %in% c("let", "LET"))]
      lapply(nonLetNames, function(nom) x[ ,c("let", "LET", nom)])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-18
        • 2018-05-07
        • 1970-01-01
        • 1970-01-01
        • 2021-11-23
        • 1970-01-01
        • 1970-01-01
        • 2017-03-29
        相关资源
        最近更新 更多