2017-08-14 65 views
1

我有一個由data.frames(幾乎完全對,但不足以直接合並)的數據集組成共同努力。幸運的是,每個df都有它創建日期的標識符,可用於引用該對。例如。從global.env調用data.frame並添加一個包含data.frame名稱的列

df_0101 <- data.frame(a = rnorm(1:10), 
         b = runif(1:10)) 

df_0102 <- data.frame(a = rnorm(5:20), 
         b = runif(5:20)) 

df2_0101 <- data.frame(a2 = rnorm(1:10), 
         b2 = runif(1:10)) 

df2_0102 <- data.frame(a2 = rnorm(5:20), 
         b2 = runif(5:20)) 

因此,我需要做的第一件事是每個data.frame由該日起(01_01/01_02 /等)發生變異的新列,即

df_0101 <- df_0101 %>% 
    mutate(df_name = "df_0101") 

但明顯程序化的方式。

我可以調用使用

l_df <- Filter(function(x) is(x, "data.frame"), mget(ls())) 

head(l_df) 
$df_0101 
      a   b 
1 0.7588803 0.17837296 
2 -0.2592187 0.45445752 
3 1.2221744 0.01553190 
4 1.1534353 0.72097071 
5 0.7279514 0.96770448 

$df_0102 
      a   b 
1 -0.33415584 0.53597308 
2 0.31730849 0.32995013 
3 -0.18936533 0.41024220 
4 0.49441962 0.22123885 
5 -0.28985964 0.62388478 

$df2_0101 
      a2  b2 
1 -0.5600229 0.6283224 
2 0.5944657 0.7384586 
3 1.1284180 0.4656239 
4 -0.4737340 0.1555984 
5 -0.3838161 0.3373913 

$df2_0102 
      a2   b2 
1 -0.67987149 0.65352466 
2 1.46878953 0.47135011 
3 0.10902751 0.04460594 
4 -1.82677732 0.38636357 
5 1.06021443 0.92935144 

在全球環境中的每個data.frame,但不知道如何再拉各的名字df,可以分解成每一個新列。有任何想法嗎?

感謝您的閱讀,

+0

的[添加列包含數據幀的名稱數據幀的列表]可能的複製(https://stackoverflow.com/questions/27258538/add-含列數據幀-名稱到一個一覽的數據幀) –

回答

1

我們可以在base R

Map(cbind, names = names(l_df), l_df) 

使用Map如果我們被tidyverse方式去,然後

library(tidyverse) 
map2(names(l_df), l_df, ~(cbind(names = .x, .y))) 

此外,這可以創建單個數據集bind_rows

bind_rows(l_df, .id = "names") 
相關問題