我需要能够用一个单独的数字来区分大列表中的数据框,以便在绑定数据框后可以基于该数字group_by
(在我的情况下,无法仅使用一个列表,没有绑定)。
示例:
df1 <- data.frame(matrix(ncol = 3, nrow = 8))
colnames(df1) <- c("a", "b")
df1$a <- seq(1, 8)
df1$b <- seq(4, 11)
df1
df2 <- data.frame(matrix(ncol = 3, nrow = 8))
colnames(df2) <- c("a", "b")
df2$a <- seq(2, 9)
df2$b <- seq(5, 12)
df2
list <- as.list.data.frame(c(df1, df2))
bind <- do.call("rbind", list)
预期结果:
bind
a b number
1 1 4 1
2 2 5 1
3 3 6 1
4 4 7 1
5 5 8 1
6 6 9 1
7 7 10 1
8 8 11 1
9 2 5 2
10 3 6 2
11 4 7 2
12 5 8 2
13 6 9 2
14 7 10 2
15 8 11 2
16 9 12 2
答案 0 :(得分:1)
我们可以使用bind_rows
并指定.id
来创建分组索引变量
library(tidyverse)
bind_rows(df1[-3], df2[-3], .id = "number")
或者使用base R
的{{1}}
Map
如果存在多个具有相同模式标识符'df1','df2',...,'df247'的对象名称,请使用do.call(rbind, Map(cbind, list(df1[-3], df2[-3]), number = 1:2))
来获取{{1}中的字符串标识符的值},然后使用mget
list