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

如何准确提取家庭伴侣最高社会阶层?处理hid缺失值异常

问题解决:处理hid缺失时的家庭最高阶层赋值

核心问题

原代码中,当*hid存在缺失值*时,所有hid为NA的个体被归为同一组计算最高社会阶层,导致这类个体的dominant_class被错误赋值为该组的最大值,而非保留自身的class值。

修正方案

我们需要:

  • 计算家庭最高阶层时,仅针对hid非缺失的组进行聚合
  • 合并后,对hid缺失的个体,将dominant_class替换为其自身的class值

修正后的代码

library(missForest)
library(dplyr)
library(tidyr)
# Set seed for reproducibility
set.seed(123)

# Create Variables
class <- sample(1:4, 10000, replace = TRUE)
hid <- rep(1:(10000/2), each = 2) 
relation <-  rep(0:1, 10000/2)
did <- rep(sample(2006:2009, 10000/2, replace = TRUE), each = 2)
cntry <- sample(c("US", "UK"), 10000, replace = TRUE)

# Combine into a data frame
df <- data.frame(class = class,
                 hid = hid,
                 relation = relation,
                 did = did,
                 cntry = cntry)

df <- prodNA(df, noNA = 0.1)

# 仅处理hid非缺失的组,同时保留原数据中class非缺失的条件
dominant_class_df <- df %>%     
  drop_na("class") %>% 
  filter(relation < 3, !is.na(hid)) %>% # 新增过滤hid非缺失的条件
  group_by(hid, did) %>%      
  summarise(dominant_class = max(class, na.rm = TRUE)) %>%
  mutate(dominant_class = if_else(is.infinite(dominant_class), NA_real_, dominant_class))

df2 <- df %>%
  left_join(dominant_class_df, by = c("hid", "did")) %>%
  # 对hid缺失的个体,将dominant_class替换为自身的class值
  mutate(dominant_class = if_else(is.na(hid), class, dominant_class))

代码说明

  1. 在生成dominant_class_df时,添加!is.na(hid)过滤条件,避免将hid缺失的个体纳入家庭聚合计算
  2. 合并后通过mutate判断:如果hid缺失,则将dominant_class赋值为当前个体的class值,否则保留聚合得到的家庭最高阶层值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:02:54