[英]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)
然后使用rbindlist
的data.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.