我是R的新手,所以这是一个初学者的问题。
目前我有来自不同公司的大量数据框,我们称之为a, b, c, d, e, f...
我想:
(1)在每个数据框中添加一列,其值等于数据框名称(我之前已根据公司读取并根据其csv文件命名每个df)
(2)将所有这些组合成一个大数据框
结果看起来类似于:
col1 col2 new_col
1 1 1 a
2 3 4 a
...
100 1 2 b
101 4 5 b
...
992 3 4 f
993 4 5 f
...
我试过了:
companies <- list(a, b, c, d, e)
companies_name <- list("a", "b", "c", "d", "e")
companies_all <- Map(cbind, companies, company <- companies_name)
但是这返回了一个列表列表。是否有更优雅的方式来实现这一目标?请帮忙!
谢谢!
这解决了一个类似的问题,但不知怎的,我无法应用代码。 r function/loop to add column and value to multiple dataframes
答案 0 :(得分:0)
a <- data.frame(col1 = 1:4, col2 = 5:8)
b <- data.frame(col1 = 11:14, col2 = 15:18)
ldfs <- list(a = a, b = b)
for (df_name in names(ldfs))
ldfs[[df_name]][["new_col"]] <- df_name
df <- do.call(rbind, ldfs)
rownames(df) <- NULL
输出:
> df
col1 col2 new_col
1 1 5 a
2 2 6 a
3 3 7 a
4 4 8 a
5 11 15 b
6 12 16 b
7 13 17 b
8 14 18 b