gpt4 book ai didi

r - 绑定(bind)许多数据框,添加一个带有其 id 的列

转载 作者:行者123 更新时间:2023-12-04 09:33:10 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Combine (rbind) data frames and create column with name of original data frames

(7 个回答)


8年前关闭。




我有许多可重复命名的数据框:

df.1 <- data.frame("x"=c(1,2), "y"=2)
df.2 <- data.frame("x"=c(2,4), "y"=4)
df.3 <- data.frame("x"=2, "y"=c(4,5))

所有数据框都具有相同的行数和列数。
我想绑定(bind)它们,添加一个带有数据框 id 的列。 id 将是源数据框的名称。

我知道我可以手动执行此操作:
rbind(data.frame(id = "df.1", df.1),
data.frame(id = "df.2", df.2),
data.frame(id = "df.3", df.3))

但是他们有很多,他们的数量在 future 会发生变化。

我尝试编写 for 循环,但它们不起作用。我想这是因为我将它们基于包含数据框名称的字符串列表,而不是数据框本身的列表。
df_names <- ls(pattern = "df.\\d+")

for (i in df_names) {
i$id <- i
i
}

...但我也没有找到任何自动创建具有可重复名称的数据框列表的方法。即使我这样做了,我也不确定上面的 for 循环是否有效:)

最佳答案

您可以使用 parseevaldf_names 获取数据帧:

do.call(rbind, lapply(df_names, function(x){data.frame(id=x, eval(parse(text=x)))}))


id x y
1 df.1 1 2
2 df.1 2 2
3 df.2 2 4
4 df.2 4 4
5 df.3 2 4
6 df.3 2 5

关于r - 绑定(bind)许多数据框,添加一个带有其 id 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21503351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com