首页 > 解决方案 > 将具有数据框名称的数据框绑定为附加的 id 列

问题描述

我在 R 中有 3 个数据框可以说:

df1 <- data.frame(x = 1:5, y = 1:5)
df2 <- data.frame(x = 1:6, y = 1:6)
df3 <- data.frame(x = 1:4, y = 1:4)

我想将它们合并在一起以创建一个新的数据框,该数据框的第一列是该数据框每一行的数据框名称。我看起来像这样:

   df x y
1  df1 1 1
2  df1 2 2
3  df1 3 3
4  df1 4 4
5  df1 5 5
6  df2 1 1
7  df2 2 2
8  df2 3 3
9  df2 4 4
10 df2 5 5
11 df2 6 6
12 df3 1 1
13 df3 2 2
14 df3 3 3
15 df3 4 4

有任何想法吗?先感谢您。

标签: r

解决方案


bind_rowsdplyr包装中使用。这将适用于任意数量的数据帧。该ls调用获取命名空间中以'df'开头的所有变量;mget为您提供数据框的命名列表。该.id参数允许您指定列名。

df_out <- bind_rows(mget(ls(pattern='df')), .id='df')

输出如下:

    df x y
1  df1 1 1
2  df1 2 2
3  df1 3 3
4  df1 4 4
5  df1 5 5
6  df2 1 1
7  df2 2 2
8  df2 3 3
9  df2 4 4
10 df2 5 5
11 df2 6 6
12 df3 1 1
13 df3 2 2
14 df3 3 3
15 df3 4 4

推荐阅读