【发布时间】:2018-10-22 17:27:09
【问题描述】:
我有 70 个包含相同列的 CSV 文件,我想对其执行相同的处理。 基本上我想要的是导入、清理、写入文件并删除所有变量,然后重复下一个。因为每个都是 0.5GB。
如何在不以有效方式迭代加载包的情况下做到这一点?
library(tidyverse)
setwd("~/R/R-3.5.1/bin/i386")
df <- read.csv(file.choose(), header = TRUE, sep = ",")
inds <- which(df$pc_no == "DELL")
df[inds - 1, c("event_rep", "loc_id")] <- df[inds, c("pc_no", "cust_id")]
df1 <- df[-inds, ]
write.csv(df1, "df1.csv")
rm(list=ls())
为此,我想我会使用这段代码,但不知道在哪里使用它。 I.E 我怎样才能实现上面的代码来做到这一点?
list.files(pattern="^events.*?\\.csv", full.names=TRUE, recursive=FALSE)
lapply(files, function(x) {
files <- function(df1)
})
【问题讨论】:
-
我建议您使用
list.files列出数据框,并使用lapply或purrr::map -
Fwiw,您可以尝试将它们全部读入。它们可能在磁盘上为 500 MB,但在 R 中则更少。顺便说一句,您可能需要
if (length(inds)){...},因为df1[-which(FALSE),]不符合您的预期。 -
@CalumYou 是的,将添加我上面所做的代码。但是不要把 lapply 函数放在哪里。
-
@KadirŞenkaya:您可以在
data.table::fread或readr::read_csv中选择要阅读的列。看到这个答案stackoverflow.com/a/48105838 -
@Tung 我使用 fread() 将文件一次导入单个数据帧。但需要一一导入导出。
标签: r tidyverse data-manipulation data-cleaning