我有一个包含150万行的csv文件,其中包含2列名称和电子邮件。我想以这样的方式编写程序:当我在R中读取文件时,输出在每个csv中被分段为5000个数据。
也许我可以通过循环执行此操作:从第1行运行到5000并将其保存为project1.csv,然后将其保存为5001到10000并保存到project2.csv,然后保存到工作目录中project3.csv中的10001到15000。有什么建议?
假设'df1'是我们需要对每5000行进行分段并将其保存在新文件中的data.frame
,我们通过创建基于行序列的分组索引来split
数据集到list
(lst
)。我们遍历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)))
使用purrr
和readr
的答案
n <- 5000
split(df1, ((seq_len(nrow(df1)))-1)%/%n+1L) %>%
purrr::iwalk(., ~ readr::write_csv(.x, paste0("project", .y, ".csv")))