R 组合ldply以组合多个csv文件,并通过mutate/basename添加具有文件名的列
我正在尝试在这里应用代码 我试图找出适当的R 组合ldply以组合多个csv文件,并通过mutate/basename添加具有文件名的列,r,csv,R,Csv,我正在尝试在这里应用代码 我试图找出适当的tidyverse语法是添加列,列出数据来源文件的名称 这是我的 test <- ldply( .data = list.files(pattern="*.csv"), .fun = read.csv, header = TRUE) %>% mutate(filename=gsub(".csv","",basename(x))) test% mutate(filename=gsu
tidyverse
语法是添加列,列出数据来源文件的名称
这是我的
test <- ldply( .data = list.files(pattern="*.csv"),
.fun = read.csv,
header = TRUE) %>%
mutate(filename=gsub(".csv","",basename(x)))
test%
mutate(filename=gsub(“.csv”,”,basename(x)))
我明白了
“basename(x)中出错:未找到对象“x”消息”
我的理解是basename(path),但当我将路径设置为包含文件的文件夹时,最终添加的filename列只有文件夹名
非常感谢您的帮助 您可以使用
purrr::map\u dfr
purrr::map_dfr(list.files(pattern="*.csv", full.names = TRUE),
~read.csv(.x) %>% mutate(file = sub(".csv$", "", basename(.x))))
我们可以使用
imap
library(purrr)
library(dplyr)
library(stringr)
library(readr)
files <- list.files(pattern="*.csv", full.names = TRUE)
fileSub <- str_remove(basename(files), "\\.csv$")
imap_dfr(setNames(files, fileSub), ~ read_csv(.x) %>%
mutate(file = .y))
库(purrr)
图书馆(dplyr)
图书馆(stringr)
图书馆(readr)
文件我不知道这是否有帮助,我偶然发现了这个非常简单的解决方案
上下文:ldply创建的.id列列出了输入向量中每个项的名称。因此,要组合多个csv文件并使用文件名创建一个新列,可以执行以下操作:
# get csv files in current working directory as a character vector
file_names <- list.files(pattern="*.csv") #for the example above it is .data=list.files(pattern="*.csv")
# Name these items (in this case equal to the items themselves, but can be subbed out for sample.Ids)
names(file_names) <- paste(file_names) # or for the example above names(.data) <- paste(.data)
# then use ldply to do the hard work
combined_csv <- ldply(file_names, read.csv)
# Names are stored under .id
combined_csv$.id
#获取当前工作目录中的csv文件作为字符向量
文件名谢谢。我得到一个错误,其中一列说它不能从因子转换为数值(但据我所知,具体列是数字开始)。是否有需要进行不同设置的参数?谢谢again@RookieSnowbodah我只是在我的系统上尝试了一些csv文件。这对我有用。但是您可以尝试在read.csv
中使用stringsAsFactors=FALSE
?刚意识到给我发问题的专栏有一些数字和一些“文件