如何用R按年份统计球队各国籍球员占比并自动导出至Excel
R实现足球队国籍占比统计并自动导出Excel的方案
首先安装并加载所需依赖包:
# 首次使用先安装包 install.packages(c("tidyverse", "openxlsx")) # 加载包 library(tidyverse) library(openxlsx)
单球队单年份统计导出
你可以直接在原有统计逻辑的基础上增加占比计算,再直接导出结果到Excel,无需手动复制:
# 统计指定球队、指定年份的国籍分布与占比 stat_result <- ARS_data %>% filter(Team == "ARS", Year == 2010) %>% count(Nation, name = "球员数量") %>% mutate( 总球员数 = sum(球员数量), 国籍占比 = 球员数量 / 总球员数 ) %>% arrange(desc(球员数量)) # 按球员数量降序排序,匹配手动统计的样式 # 直接导出到Excel文件 write.xlsx( x = stat_result, file = "ARS_2010_国籍占比统计.xlsx", rowNames = FALSE # 不导出R默认行号,符合Excel使用习惯 )
批量多年份统计导出
如果需要一次性完成2010-2020年的统计,可通过分组逻辑批量处理,结果可按年份存放在同一个Excel的不同工作表中:
# 批量统计2010-2020年所有年份的ARS队国籍占比 all_year_stat <- ARS_data %>% filter(Team == "ARS", Year %in% 2010:2020) %>% group_by(Year) %>% group_modify(~{ .x %>% count(Nation, name = "球员数量") %>% mutate( 总球员数 = sum(球员数量), 国籍占比 = 球员数量 / 总球员数 ) %>% arrange(desc(球员数量)) }) %>% ungroup() # 按年份拆分数据,导出到同一Excel的不同工作表 split_data <- split(all_year_stat, all_year_stat$Year) write.xlsx( x = split_data, file = "ARS_2010-2020_国籍占比统计汇总.xlsx", rowNames = FALSE )
可选:设置Excel百分比格式
如果需要让占比列在Excel中直接显示为百分比样式,可通过openxlsx的样式功能实现:
# 创建工作簿与工作表 wb <- createWorkbook() addWorksheet(wb, "2010年统计") # 写入数据 writeData(wb, "2010年统计", stat_result, rowNames = FALSE) # 设置百分比格式 pct_style <- createStyle(numFmt = "0.00%") addStyle( wb, "2010年统计", style = pct_style, cols = which(colnames(stat_result) == "国籍占比"), rows = 2:(nrow(stat_result) + 1) ) # 保存文件 saveWorkbook(wb, "ARS_2010_国籍占比统计_带格式.xlsx", overwrite = TRUE)
内容的提问来源于stack exchange,提问作者Alexander Fos
相关产品推荐
相关产品推荐

