【问题标题】:Combining data sets vertically垂直组合数据集
【发布时间】:2021-03-21 15:37:13
【问题描述】:

假设我有三个数据集

DF1=
Traj X Y
1   4 5
1   7 8
2   5 6
DF2=

Traj X Y
1   5 2
1   6 4
2   8 7
DF3=

Traj X Y
1   8 5
1   1 9
2   3 7

如何将它们组合成一个数据集,如下所示:

DF1=

Traj X Y
1   4 5
1   7 8
2   5 6
1   5 2
1   6 4
2   8 7
1   8 5
1   1 9
2   3 7

我有许多具有相似元素的相似数据,将它们组合起来会更容易,不幸的是我不知道该怎么做。

【问题讨论】:

    标签: r


    【解决方案1】:

    在基础 R 中,rbind(DF1, DF2, DF3rbind 代表“行绑定”,即“将行放在一起”)。在 tidyverse 中,dplyr::bind_rows(DF1, DF2, DF3) 稍微花哨一些。

    如果您已有数据框列表,

    DFlist <- list(DF1, DF2, DF3)
    do.call(DFlist, rbind)
    

    【讨论】:

      【解决方案2】:

      只需这样做

      rbind(df1, df2, df3) 
      

      【讨论】:

        【解决方案3】:

        另一种选择是将其放在list 中并使用bind_rows

        library(dplyr)
        mget(ls(pattern = '^DF\\d+$')) %>%
               bind_rows
        

        【讨论】:

          【解决方案4】:

          这也有效:

          bind_rows(DF1, DF2, DF3)
          

          【讨论】:

          • 这与我和@akrun 之前发布的答案有何不同/有何不同?
          • 见这里:stackoverflow.com/questions/42887217/…>。在我发帖时,我没有认出来自 akrun 的 bind_rows。但无论如何,您可以简单地使用 bind_rows 而不使用 mget
          • 我的回答已经提到了bind_rows()(在第二句中),尽管它不像您的回答那样明确说明相当。 (我刚刚编辑了我的答案,以使隐含的“bind_rows 的调用方式与rbind”相同......)
          • 是的,Ben。但这不是一个坏意图。我刚刚阅读了您帖子中带有bind_rows 的部分。对此感到抱歉。在我发布我的答案时,我已经投票赞成你的答案。
          • 这是有道理的。我没有否决你的答案,只是犹豫是否要投赞成票。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-19
          • 2020-05-28
          • 2017-05-02
          • 2020-07-22
          • 1970-01-01
          相关资源
          最近更新 更多