【问题标题】:How to cbind columns from a data frame of differing lengths by inserting NAs?如何通过插入 NA 从不同长度的数据框中绑定列?
【发布时间】:2012-02-14 22:46:00
【问题描述】:

我有一个数据框列表 L,每个数据框有两列...一个键和一个值列。我想创建一个数据框,其中第 i 列是第 i 个数据框的值列。问题是列表 L 中的不同数据帧具有略微不同的键(大部分相同,但从 data.frame 到 data.frame 提供或获取一对)所以一个简单的 do.call 与 cbind 不会削减它)。我遍历了数据框列表并合并了键列以获得一组包罗万象的键 bigKeySet ...我现在想做的是构建这个 data.frame,其中每个都有一行此 bigKeySet 中的键的个数,如果该 data.frame 没有该键的条目,则列中的 NA 条目。但是,我不确定如何执行此操作 - 有什么建议吗?

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    没有一些示例数据我不确定,但是:

    merge(df1,df2,all=T,by='keys') 
    

    将通过它们的键列组合两个数据框并相应地命名值列。

    【讨论】:

      【解决方案2】:

      假设您有一个函数valueForKey(),它返回一个键值(或等效语句):

      myKeys <- c('foo', 'bar')
      bigKeySet <- c('foo', 'baz', 'bar')
      result <- as.vector(mapply(function(x) { if (x %in% myKeys) print(valueForKey(x)) else print(NA) }, bigKeySet))
      

      您可以将result 绑定到您感兴趣的数据框。对 myKeys 的所有实例重复此操作。

      【讨论】:

        猜你喜欢
        • 2022-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多