【问题标题】:How to use bind_rows() to merge datasets while keeping the names of the datasets as a variable [duplicate]如何使用 bind_rows() 合并数据集,同时将数据集的名称保留为变量 [重复]
【发布时间】:2020-09-16 23:56:00
【问题描述】:

我有一些要与 bind_rows 合并的数据集。我的代码是这样的

df1 <- data.frame(v1 = 1:10, v2 = 11:20)
df2 <- data.frame(v1 = 11:20, v2 = 1:10)

list(df1, df2) %>%
  bind_rows(.id = "name")

我希望 name 列读取 "df1" 对应 df1"df2" 对应 df2。我知道我可以使用set_names() 手动执行此操作...

list(df1, df2) %>%
  set_names(c("df1", "df2")) %>%
  bind_rows(.id = "name")

...但是我想要一种以编程方式执行此操作的方法,无论数据集名称是什么都可以。我该怎么做?

【问题讨论】:

    标签: r dplyr purrr


    【解决方案1】:

    我们可以使用dplyr::lstpurrr::lst,它会自动返回带有参数的命名list

    library(dplyr)
    dplyr::lst(df1, df2) %>%
      bind_rows(.id = "name")
    #   name v1 v2
    #1   df1  1 11
    #2   df1  2 12
    #3   df1  3 13
    #4   df1  4 14
    #5   df1  5 15
    #6   df1  6 16
    #7   df1  7 17
    #8   df1  8 18
    #9   df1  9 19
    #10  df1 10 20
    #11  df2 11  1
    #12  df2 12  2
    #13  df2 13  3
    #14  df2 14  4
    #15  df2 15  5
    #16  df2 16  6
    #17  df2 17  7
    #18  df2 18  8
    #19  df2 19  9
    #20  df2 20 10
    

    【讨论】:

    • 哇,它的启动速度超级快!我要稍等片刻才能选择这个答案,因为我似乎记得另一种方法,我想看看是否有其他人加入,但这很好。
    猜你喜欢
    • 2020-10-11
    • 2018-05-11
    • 2021-12-03
    • 2016-02-05
    • 2017-12-15
    • 2013-12-23
    • 2012-08-22
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多