我一直在寻找一个与我相似的问题,但我找不到。无论何时你找到一个,让我知道。
我有一个如下所示的df (实际上,这个df有三列和1000多行):
Name, Value
Markus, 2
Markus, 4
Markus, 1
Caesar, 77
Caesar, 70
Brutus, 3
Nero, 4
Nero, 9
Nero, 10
Nero, 19如何为每个匹配创建一个自己的csv文件(取决于名称)?我不知道该怎么处理这个。
在这种情况下,最终结果应该是四个csv文件,其名称来自name列:
Markus.csv
Caesar.csv
Brutus.csv
Nero.csv我很感谢你的建议。
发布于 2022-11-09 15:01:51
我们可以通过split通过Name来创建一个列表,迭代它并为每个组编写一个csv。文件名是使用paste0创建的
lst <- split(df, df$Name)
lapply(1:length(lst), function(i){
write.csv(lst[[i]], paste0(names(lst)[i], ".csv"), row.names = FALSE)
})发布于 2022-11-09 15:13:01
与u/Jilber类似,您可以使用dplyr和tidyr来过滤数据集。这两种答案的基本原理是通过write.csv()函数在列表/名称向量上迭代lapply()函数。
library(dplyr)
library(tidyr)
lapply(unique(df$Name), function(i) {
write.csv(
x = df %>% dplyr::filter(Name==i) %>% # filter dataset by Name
select(-Name), # if you want to remove the Name column from output
file = paste0(i,'.csv'),
row.names = FALSE
)
})https://stackoverflow.com/questions/74376921
复制相似问题