首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为每一场比赛创建自己的csv

为每一场比赛创建自己的csv
EN

Stack Overflow用户
提问于 2022-11-09 14:56:45
回答 2查看 31关注 0票数 1

我一直在寻找一个与我相似的问题,但我找不到。无论何时你找到一个,让我知道。

我有一个如下所示的df (实际上,这个df有三列和1000多行):

代码语言:javascript
复制
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列:

代码语言:javascript
复制
Markus.csv
Caesar.csv
Brutus.csv
Nero.csv

我很感谢你的建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-09 15:01:51

我们可以通过split通过Name来创建一个列表,迭代它并为每个组编写一个csv。文件名是使用paste0创建的

代码语言:javascript
复制
lst <- split(df, df$Name)
lapply(1:length(lst), function(i){
  write.csv(lst[[i]], paste0(names(lst)[i], ".csv"), row.names = FALSE)
})
票数 2
EN

Stack Overflow用户

发布于 2022-11-09 15:13:01

与u/Jilber类似,您可以使用dplyrtidyr来过滤数据集。这两种答案的基本原理是通过write.csv()函数在列表/名称向量上迭代lapply()函数。

代码语言:javascript
复制
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
  )
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74376921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档