在R中,使用df名称将NEW列添加到MULTIPLE df

时间:2016-11-30 08:58:38

标签: r

我是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

1 个答案:

答案 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