我有一个很大的csv数据集,我想将其拆分为多个txt文件。我希望每个文件的名称都来自ID列,每个文件的内容都来自文本列。我的数据看起来像这样。
ID Text
1 I like dogs
2 My name is
3 It is sunny
任何人都可以提供建议吗?我不介意使用excel或R。 谢谢!
答案 0 :(得分:3)
在R中,您可以通过split
ID
writeLines
并使用df
将其写入文本文件。
如果您的数据框名为temp <- split(df$Text, df$ID)
Map(function(x, y) writeLines(x, paste0(y, '.txt')), temp, names(temp))
,请尝试:
{{1}}
答案 1 :(得分:2)
如果您有很多行,那么这对于并行计算是一项很好的任务。 (Here's the general premise:R花费大量时间来格式化文件。无法并行写入磁盘,但是可以格式化文件。)所以让我们并行进行!
furrr
软件包是我的最爱之一:简而言之,它为purrr
软件包增加了并行处理功能,其映射功能非常有用。在这种情况下,我们要使用future_pmap
函数,该函数使我们可以将函数应用于数据帧的每一行。这应该是您需要的所有代码:
library(furrr)
plan(multiprocess)
future_pmap(df, function(id, value) {write(value, paste0(id, ".txt"))})
我在具有31,496行的数据帧上测试了此函数的并行版本和普通版本,而并行版本仅花了60%的时间。这种方法也比Ronak Shah's writeLines
method快20%。