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

使用ACS PUMS数据实现Stata代码转R:创建flag标识与新变量

ACS PUMS数据Stata代码转R实现方案

1 flag标识变量的创建说明

R中不存在特殊的「flag标识变量」类型,你理解的flag本质就是指示符合特定条件的二元变量,用逻辑型(TRUE/FALSE)或0/1整数型都可以实现,和普通变量创建规则完全一致。

你之前的代码将结果转为因子没有必要,而且不符合后续求和的使用需求,正确的worker变量创建代码如下:

基础R实现

# 生成1/0标识,WKL为"1"时取1,其余取0
2019PUMS$worker <- as.integer(2019PUMS$WKL == "1")
# WKL为空时赋值为缺失值
2019PUMS$worker[2019PUMS$WKL == ""] <- NA

dplyr实现(更推荐用于数据处理流程)

library(dplyr)
2019PUMS <- 2019PUMS %>%
  mutate(worker = case_when(
    WKL == "1" ~ 1,
    WKL == "" ~ NA_integer_,
    TRUE ~ 0
  ))

2 按家庭SERIALNO分组计算务工人数wihh

对应Stata的by serialno, sort: egen wihh=sum(worker)逻辑,R中用分组汇总后赋值即可:

基础R实现

2019PUMS$wihh <- ave(2019PUMS$worker, 2019PUMS$SERIALNO, FUN = function(x) sum(x, na.rm = TRUE))

dplyr实现(代码可读性更高)

2019PUMS <- 2019PUMS %>%
  group_by(SERIALNO) %>%
  mutate(wihh = sum(worker, na.rm = TRUE)) %>%
  ungroup()

补充说明

如果需要worker为逻辑型flag,直接去掉as.integer即可,逻辑值TRUE在求和时会自动被识别为1,FALSE识别为0,不影响后续wihh的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:45:03