有没有更快的方法来获取一堆csv文件,将它们合并在一起(它们都具有相同的结构)但只保留那些大于5的值(一列)?
csv文件每行有数千行,而通常少于100(每个csv)将大于5。
我的工作代码是:
library(tidyverse)
filelocns <-"C:/Data/test/"
# get files list from folder
file.list <- list.files(path=filelocns, recursive=T,pattern='*.csv')
# row bind the listed CSVs and filter for Values >= 5
rows_gt5 <- lapply(paste0(filelocns,file.list),read.csv) %>%
bind_rows() %>%
filter(Value>=5)
答案 0 :(得分:2)
尝试read_csv
是否适合您,即更改行
rows_gt5 <- lapply(paste0(filelocns,file.list),read.csv) %>%
到
rows_gt5 <- lapply(paste0(filelocns,file.list),read_csv) %>%
一般来说,它比read.csv
快。
有关如何使用它的更多详细信息,请查看docs。
答案 1 :(得分:1)
以下是我如何做到这一点:
# source dependencies
library(dplyr)
# declare path to desired directory
filelocns <-"C:/Data/test/"
# list all of the files within this directory
file.list <- list.files(path=filelocns
,pattern='\\.csv$'
,all.files = FALSE
,full.names = TRUE
,ignore.case = FALSE
)
# apply the read_csv function to our list of files
row_gt5 <- ldply(file.list, read_csv) %>%
# and filter out values less than five
filter(Values>=5)
您可以使用自定义函数包装器替换read_csv函数,以便在将原始数据存储到主数据帧之前动态重新格式化原始数据。 听起来像read_csv就是你需要的所有东西。