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

求助:如何用R语言批量自动清洗登革热病例数据集

批量清洗登革热数据集的R实现

方法1:使用基础包lapply

无需额外安装新包,快速实现批量处理:

# 加载所需包
library(tidyr)

# 1. 自动生成所有CSV文件名
file_names <- sprintf("DENGBR%02d.csv", 0:23)  # 生成DENGBR00到DENGBR23的文件名

# 2. 定义单个数据集的清洗函数
clean_dengue_data <- function(file_path) {
  # 读取文件
  df <- read.csv(file_path)
  
  # 保留指定列(第1、3、8列)
  df <- subset(df, select = c(1, 3, 8))
  
  # 筛选目标城市的观测值
  df <- df[df$ID_MUNICIP %in% c(3550308), ]
  
  # 重命名列
  df <- df %>%
    rename(mn = ID_MUNICIP,
           dt = DT_NOTIFIC,
           uf = SG_UF_NOT)
  
  return(df)
}

# 3. 批量处理所有文件
cleaned_data_list <- lapply(file_names, clean_dengue_data)

# 可选:将所有清洗后的数据集合并为一个大的数据框
combined_dengue_data <- do.call(rbind, cleaned_data_list)

方法2:使用purrr包(tidyverse风格)

如果习惯tidyverse语法,用purrr的链式调用更直观:

# 加载所需包
library(tidyr)
library(purrr)
library(dplyr)

# 1. 生成文件名列表
file_names <- sprintf("DENGBR%02d.csv", 0:23)

# 2. 批量处理并合并为单个数据框
combined_dengue_data <- file_names %>%
  map(read.csv) %>%  # 批量读取所有文件
  map(~ subset(., select = c(1, 3, 8))) %>%  # 保留指定列
  map(~ filter(., ID_MUNICIP %in% c(3550308))) %>%  # 筛选目标城市
  map(~ rename(., mn = ID_MUNICIP, dt = DT_NOTIFIC, uf = SG_UF_NOT)) %>%  # 重命名列
  bind_rows()  # 合并所有结果

关键说明

  • sprintf("DENGBR%02d.csv", 0:23):自动生成带两位数字的文件名,避免手动重复输入
  • 封装清洗函数:把单个文件的操作打包成函数,逻辑清晰且便于后续调整清洗规则
  • 结果存储:cleaned_data_list以列表形式保存每个单独清洗后的数据集,combined_dengue_data是合并后的总数据集,可根据研究需求选择使用

内容的提问来源于stack exchange,提问作者André Ferrari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:15:02