在循环中写入多个CSV文件

问题描述 投票:0回答:2

我有一个包含150万行的csv文件,其中包含2列名称和电子邮件。我想以这样的方式编写程序:当我在R中读取文件时,输出在每个csv中被分段为5000个数据。

也许我可以通过循环执行此操作:从第1行运行到5000并将其保存为project1.csv,然后将其保存为5001到10000并保存到project2.csv,然后保存到工作目录中project3.csv中的10001到15000。有什么建议?

r csv xls
2个回答
2
投票

假设'df1'是我们需要对每5000行进行分段并将其保存在新文件中的data.frame,我们通过创建基于行序列的分组索引来split数据集到listlst)。我们遍历list元素(lapply(...)的序列,并用write.csv编写新文件。

n <- 5000
lst <-  split(df1, ((seq_len(nrow(df1)))-1)%/%n+1L)
invisible(lapply(seq_along(lst), function(i) 
   write.csv(lst[[i]], file=paste0('project', i, '.csv'), row.names=FALSE)))

0
投票

使用purrrreadr的答案

n <- 5000
split(df1, ((seq_len(nrow(df1)))-1)%/%n+1L) %>%
  purrr::iwalk(., ~ readr::write_csv(.x, paste0("project", .y, ".csv")))
© www.soinside.com 2019 - 2024. All rights reserved.