在R中合并csv文件并添加具有文件名的列
我想合并存储在单个文件夹中的多个csv文件,并在对应的行中添加一列,其中包含每个csv文件的名称。这些文件具有相同的列数和列名。例如: 文件1.csv第1行第1列:“a”,第1行第2列:“b” 文件2.csv第1行第1列:“c”,第1行第2列:“d” 期望输出: 第1栏第2栏第3栏 A.B文件1.csv在R中合并csv文件并添加具有文件名的列,r,R,我想合并存储在单个文件夹中的多个csv文件,并在对应的行中添加一列,其中包含每个csv文件的名称。这些文件具有相同的列数和列名。例如: 文件1.csv第1行第1列:“a”,第1行第2列:“b” 文件2.csv第1行第1列:“c”,第1行第2列:“d” 期望输出: 第1栏第2栏第3栏 A.B文件1.csv CD文件2.csv您可以首先获取所有文件名,这些文件名指定了列表.files中的模式参数。您可以使用lappy读取它们并添加一个新列 files <- list.files(pattern
CD文件2.csv您可以首先获取所有文件名,这些文件名指定了
列表.files
中的模式
参数。您可以使用lappy
读取它们并添加一个新列
files <- list.files(pattern = '\\.csv$', full.names = TRUE)
all_data <- do.call(rbind, lapply(files, function(x)
transform(read.csv(x), File = basename(x))))
这可以通过多种方式实现。我倾向于使用fs获取文件路径的数据帧,然后使用purrr将csv作为嵌套数据帧读入:
library(tidyverse)
library(fs)
dir_info() %>%
filter(endsWith(path, ".csv")) %>%
select(path) %>%
mutate(data = purrr::map(path, read_csv)) %>%
unnest()
您想
合并
这些文件,还是追加
它们?合并(粗略地)意味着添加新列;追加意味着添加新行。假设文件A和B分别有50行和100行以及10列。merge
输出可以有50-150行和10-20列;追加输出将有150行和10列。
library(tidyverse)
library(fs)
dir_info() %>%
filter(endsWith(path, ".csv")) %>%
select(path) %>%
mutate(data = purrr::map(path, read_csv)) %>%
unnest()