You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用lapply批量处理多年份边境数据CSV文件并生成对应可视化图表

R语言lapply批量处理边境数据实现方案

前置依赖

先确保你已经安装并加载了所有用到的包:

library(readr)
library(stringr)
library(countrycode)
library(plyr)
library(ggplot2)

封装单年份处理逻辑

把你对单一年份的处理流程封装为自定义函数,入参为需要处理的年份:

process_border_data <- function(year) {
  # 1. 读取对应年份的csv文件
  file_path <- paste0("Downloads/BorderData/BorderApprehension", year, ".csv")
  border_data <- read_csv(file_path)
  
  # 2. 缺失值替换为0(修正了你原代码里2008年变量名写错的笔误)
  border_data[is.na(border_data)] <- 0
  
  # 3. 公民身份字段统一首字母大写
  border_data$CITIZENSHIP <- str_to_title(border_data$CITIZENSHIP)
  
  # 4. 匹配对应区域
  border_data$Region <- countrycode(sourcevar = border_data$CITIZENSHIP, 
                                    origin = "country.name", 
                                    destination = "region")
  
  # 5. 标记总计行(你原代码里第26列是总计列,确认列位置没有变动就可以直接用)
  border_data[nrow(border_data), 26] <- "Total"
  
  # 6. 按区域汇总
  world_region <- ddply(border_data, "Region", numcolwise(sum))
  
  # 7. 生成可视化图
  p <- ggplot(world_region, aes(x = Region, y = Total)) +
    geom_col(width = 0.5, position = position_dodge(3), fill = 'blue', alpha = 0.5) +
    scale_y_log10() +
    coord_flip() +
    geom_text(aes(label=Total), alpha = 1.0, check_overlap = TRUE) +
    ggtitle(paste0("Apprehension By World Region Totals in ", year))
  
  # 可选:如果需要自动保存图片到本地,取消注释下面一行
  # ggsave(paste0("border_apprehension_", year, ".png"), plot = p, width = 10, height = 6)
  
  # 返回结果,可选返回数据或者直接返回图
  return(list(data = border_data, plot = p))
}

用lapply批量处理所有年份

定义你需要处理的所有年份的向量,传入lapply调用上面的函数即可:

# 替换为你实际需要处理的所有年份
target_years <- c(2007, 2008, 2009, 2010, 2011)

# 批量执行,结果会存为列表,每个元素对应一个年份的处理结果
all_result <- lapply(target_years, process_border_data)

# 如果你要单独提取某一年的图,比如2007年的图,直接取列表第一个元素的plot即可
# print(all_result[[1]]$plot)

注意事项

  • 如果你的年份文件有缺失,运行时会报文件不存在的错误,提前核对target_years里的年份都有对应csv文件即可
  • 如果你不需要保留处理后的数据,只需要画图,可以把函数里的return改为直接打印图print(p)即可
  • 原代码里第26列写死为总计列,如果你不同年份的csv列数有差异,建议把固定列号改为列名,比如border_data$Total[nrow(border_data)] <- "Total" 更稳妥

内容的提问来源于stack exchange,提问作者josephtg1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 09:30:01