2016-11-30 99 views
1

我是R新手,因此这是一个初学者问题。在R中,使用df名称添加NEW列到多个df

目前,我有相当多的来自不同公司的数据帧,可以称他们为a, b, c, d, e, f...

我想:

(1)一列添加到具有价值的每个数据帧等于数据框架名称(我以前读&根据公司命名为从csv文件各DF)

(2)结合个个成一个大的数据帧

结果将升OOK类似于:

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

看看从'data.table'包及其'idcol'参数的'rbindlist'功能。 – nicola

回答

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