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

如何用函数整合不同wave的多个dataframe并计算个体收入均值

函数化处理纵向数据集的收入均值计算

通用函数实现

下面是一个可批量处理多wave纵向数据的函数,自动完成文件读取、变量筛选、数据合并与均值计算:

library(tidyverse)
library(haven) # 用于读取dta格式文件

calculate_income_mean <- function(file_paths, id_col = "ID", income_prefix = "income_wave_") {
  # 批量读取并处理每个wave的数据
  wave_data_list <- map(file_paths, function(path) {
    df <- read_dta(path)
    # 自动匹配当前wave的收入变量
    income_col <- grep(paste0("^", income_prefix), colnames(df), value = TRUE)
    df %>% select(all_of(c(id_col, income_col)))
  })
  
  # 合并所有wave的数据
  combined_df <- reduce(wave_data_list, full_join, by = id_col)
  
  # 计算每个ID的收入均值
  final_df <- combined_df %>%
    mutate(average_income = rowMeans(select(., starts_with(income_prefix)), na.rm = TRUE)) %>%
    select(all_of(c(id_col, "average_income")))
  
  return(final_df)
}

参数说明

  • file_paths:包含所有wave数据文件路径的字符向量,示例:c("C:/User/all_waves/wave1.dta", "C:/User/all_waves/wave2.dta", "C:/User/all_waves/wave3.dta")
  • id_col:标识研究对象的唯一ID列名,默认值为"ID"
  • income_prefix:收入变量的前缀(如示例中的"income_wave_"),函数会自动匹配每个wave中以此前缀开头的收入列

使用示例

用测试数据验证

先将示例数据保存为临时dta文件(实际使用时直接替换为真实文件路径即可):

# 生成示例数据
wave_1 <- data.frame(ID=c(1, 2, 3, 4, 5, 6),
                     income_wave_1=c(109, 106, 67, NA, 65, 190))
wave_2 <- data.frame(ID=c(1, 2, 3, 4, 5, 6),
                     income_wave_2=c(NA, 120, 34, 76, 69, 160))
wave_3 <- data.frame(ID=c(1, 2, 3, 4, 5, 6),
                     income_wave_3=c(34, 64, 78, NA, 170, 200))

# 保存为dta格式
write_dta(wave_1, "wave1.dta")
write_dta(wave_2, "wave2.dta")
write_dta(wave_3, "wave3.dta")

# 调用函数计算均值
file_paths <- c("wave1.dta", "wave2.dta", "wave3.dta")
result <- calculate_income_mean(file_paths)

# 查看结果
print(result)

输出结果:

ID average_income
1  1       71.50000
2  2       96.66667
3  3       59.66667
4  4       76.00000
5  5      101.33333
6  6      183.33333

优势说明

  • 无需手动逐个处理每个wave,新增wave时仅需在file_paths中添加对应路径
  • 自动匹配收入变量,避免手动指定每个wave的收入列名
  • 基于tidyverse生态,代码简洁易读,便于后续扩展(如添加中位数、标准差等统计量)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:01:01