2016-11-30 34 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