我想创建一个包含多个.csv文件的数据框而不会丢失任何列(即,对于没有特定列的任何.csv文件,该空间将用NA
填充。像通过列名对齐它们的过程一样,但是.csv中列的顺序也不总是匹配。
我已经从仅包含上述文件的文件夹中创建了.csv文件列表
files <- dir("C:/...")
我想将这些.csv文件读入一个数据帧。我到目前为止所拥有的...
table_all <- do.call(rbind.fill(ldply(files, read.csv,
stringsAsFactors= TRUE, header= T, sep= ",")))
我假设解决方案涉及do.call
和rbind
,bind_rows
或rbind.fill
的某种组合。我读过一些有关rbindlist
的计算较轻的信息,但是它仅按位置匹配,并且由于我的.csv的列顺序混乱,因此我需要一些按名称匹配的内容。
答案 0 :(得分:0)
解决此问题的一般方法需要一些步骤。请参见下面的伪代码(直到我们可以更好地处理您的特定示例):
# step 1 -- list files and prepare columns
file_list <- list.files(path="your_path",
pattern="your_pattern",
full.names=TRUE)
all_columns <- c("list", "your", "columns", "here")
# ideally all_columns will come from names(df)
# with df being your most complete df
# step 2 -- read and match columns before binding
li <- purrr::map(file_list,
function(file){
df <- read.csv(file)
current_names <- names(df)
# find what names are missing
# do mutate(missing_names = NA)
return(df)
}
)
# step 3 -- bind
output <- bind_rows(li)