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

请求将指定Stata命令转换为R代码以复现回归分析

Stata转R代码方案

原Stata命令逻辑拆解

1. 数据聚合(collapse命令)

  • 分组依据:city、id、sic、after四个变量
  • 聚合规则:
    • varA:取分组内最大值
    • 以下变量取分组内均值:VarB、one、two、three、four、five、p、rel、所有以ww开头的变量、所有以aa开头的变量、r_wk

2. 数据清洗命令

  • 将year变量转换为整数类型
  • 当emp变量缺失时,把lemp设为-99
  • 删除已存在的lempm变量(如果有),再生成新的lempm变量:lemp等于-99时为TRUE,否则为FALSE

对应的R代码实现(使用dplyr包)

先安装并加载dplyr:

# 安装dplyr(未安装时执行)
install.packages("dplyr")
# 加载dplyr
library(dplyr)

1. 数据聚合(对应Stata的collapse)

df_aggregated <- df %>%
  group_by(city, id, sic, after) %>%
  summarise(
    varA = max(varA, na.rm = TRUE),  # 取最大值,忽略缺失值
    # 单个变量取均值
    across(c(VarB, one, two, three, four, five, p, rel, r_wk), ~mean(.x, na.rm = TRUE)),
    # 所有以ww开头的变量取均值
    across(starts_with("ww"), ~mean(.x, na.rm = TRUE)),
    # 所有以aa开头的变量取均值
    across(starts_with("aa"), ~mean(.x, na.rm = TRUE)),
    .groups = "drop"  # 聚合后取消分组状态
  )

注:na.rm = TRUE对应Stata默认处理缺失值的逻辑,若原命令不需要忽略缺失值,可删除该参数。

2. 转换year为整数

df_aggregated <- df_aggregated %>%
  mutate(year = as.integer(year))

3. 处理lemp与生成lempm

df_aggregated <- df_aggregated %>%
  mutate(
    lemp = ifelse(is.na(emp), -99, lemp),  # emp缺失时将lemp设为-99
    lempm = lemp == -99  # 生成lempm变量
  )

注:R中mutate会直接覆盖已存在的lempm变量,等效于Stata的cap drop + gen操作。


完整整合代码

install.packages("dplyr")
library(dplyr)

# 一站式完成聚合+清洗
df_aggregated <- df %>%
  group_by(city, id, sic, after) %>%
  summarise(
    varA = max(varA, na.rm = TRUE),
    across(c(VarB, one, two, three, four, five, p, rel, r_wk), ~mean(.x, na.rm = TRUE)),
    across(starts_with("ww"), ~mean(.x, na.rm = TRUE)),
    across(starts_with("aa"), ~mean(.x, na.rm = TRUE)),
    .groups = "drop"
  ) %>%
  mutate(year = as.integer(year)) %>%
  mutate(
    lemp = ifelse(is.na(emp), -99, lemp),
    lempm = lemp == -99
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:58:26