我正在尝试在R中合并700多个csv文件。我能够使用以下代码成功合并它们:
library(dplyr)
library(readr)
df <- list.files(full.names = TRUE) %>%
lapply(read_csv) %>%
bind_rows
现在我的问题是文件名另存为flux.0,flux.1,flux.2 ...... flux.733。 R会按flux.0,flux.1,flux.10,flux.100,flux.101 ...的顺序绑定文件。由于文件的顺序对我很重要,因此您可以建议将其合并到上面的代码中吗? 非常感谢您的帮助!
答案 0 :(得分:1)
我执行类似操作的管道是获取所有文件的列表(如您所做的那样),将其转换为tbl
/ data.frame
,然后使用map
来读取文件并unnest()
。这就是为什么我可以保留我加载的每个文件的路径/文件名的原因。
require(tidyverse)
df <- list.files(path = "path",
full.names = TRUE,
recursive = TRUE,
pattern = "*.csv") %>%
tbl_df() %>%
mutate(data = map(value, read.csv)) %>%
arrange(value) %>%
unnest(data)
答案 1 :(得分:0)
在这里,您将使用自己的方法得到另一个答案。我刚刚添加了一个读取csv的函数,并添加了一个名为'file'的新列,其文件名不带扩展名。
library(dplyr)
library(readr)
df <- list.files(full.names = TRUE) %>%
lapply(function(x) {a <- read_csv(x);
mutate(a, file = tools::file_path_sans_ext(basename(x)))}) %>%
bind_rows