簡體   English   中英

是否有R功能來組合許多數據幀

[英]Is there R function to combine many data frames

我有2個數據集(c和d)的樣本。 我已經使用合並命令將它們合並

 c <- data.frame(x=c("a","b"),y=c("c","d"))
 d <- data.frame(x=c("f","g"),y=c("h","e"))
 library(gdata)
 combine(c,d)
  x y source
1 a c      c
2 b d      c
3 f h      d
4 g e      d

好。 假設我有100個數據框,例如c,d,e,f .....等(具有相同的列)。 有沒有一種方法可以將所有這些快速合並。 否則我需要調用以下命令

 combine(c,d,e,f........) 

 df <- read.csv(file.choose())
 combine(df)

並且上述非常耗時。 是否有替代方案可以輕松組合所有數據幀

您可以使用以下方法列出目錄中要讀取的所有文件:

listoffiles <- list.files(pattern = ".csv")

然后循環遍歷所有文件,並使用df_ assign變量名稱。

for(i in 1:length(listoffiles)) {
   assign(paste0("df_", i), read.csv2(listoffiles[i]))
}

然后在全局環境中搜索所有文件。 然后,您可以指定一個搜索模式,該模式將為"df_"並生成一個data.frames列表。

dflist <- mget(ls(.GlobalEnv, pattern = "df_"), envir = .GlobalEnv)

然后使用rbindlistdata.table組合data.frames。

> data.table::rbindlist(dflist)
   x y
1: a c
2: b d
3: f h
4: g e

如果我正確理解了這個問題,則OP在字符向量中具有數據幀的名稱,但是數據幀本身是全局環境中的單個對象。 在這種情況下,我建議如下。

假設這是數據和字符向量:

 c <- data.frame(x=c("a","b"),y=c("c","d"), stringsAsFactors = FALSE)
 d <- data.frame(x=c("f","g"),y=c("h","e"), stringsAsFactors = FALSE)
 e <- data.frame(x=c("x","y"),y=c("o","p"), stringsAsFactors = FALSE)

 df_names <- c("c", "d","e")

然后dplyr :: bind_rows與c(mget(...))應該做的工作。

library(dplyr)   
bind_rows(c(mget(df_names)), .id = "source") 

> source x y
1      c a c
2      c b d
3      d f h
4      d g e
5      e x o
6      e y p

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM