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

R语言处理GEM等4类数据集:识别并删除缺失值NA

跨国数据集缺失值处理全方案

第一步:统一缺失值标记

四个数据集里仅Hofstede使用.作为缺失值标记,其余三个数据集的缺失值均为R标准NA格式,先统一缺失值规范:

# 替换Hofstede中的.为标准NA
Hofstede[Hofstede == "."] <- NA
# 将Hofstede的文化维度列从字符型转为数值型,自动处理异常值为NA
Hofstede[, c("Power Distance", "Individualism", "Masculinity", "Uncertainty Avoidance")] <- lapply(Hofstede[, c("Power Distance", "Individualism", "Masculinity", "Uncertainty Avoidance")], as.numeric)

其余三个数据集无自定义缺失标记,无需额外转换。

第二步:缺失值情况统计

先统计各列缺失率,判断缺失严重程度再决定处理逻辑:

# 以GEM数据集为例,其他数据集替换变量名即可
# 查看每列缺失率(百分比)
sapply(GemData, function(x) round(sum(is.na(x))/nrow(GemData)*100, 2))
# 查看所有包含缺失值的行
GemData[!complete.cases(GemData), ]

如果某列缺失率超过30%,建议优先考虑是否要将该列纳入回归,而非直接删除样本。

第三步:缺失值剔除方案

可根据你的分析需求二选一:

  • 仅剔除回归用到的变量有缺失的样本(推荐,尽可能保留样本量)
    可以直接在回归函数中指定缺失处理逻辑,不需要提前删数:
    # 回归时自动剔除用到的变量存在缺失的样本
    lm(因变量 ~ 自变量1 + 自变量2, data = 你的数据集, na.action = na.omit)
    
    如果需要单独提取干净的数据集用于其他分析:
    # 替换引号内的内容为你实际要用到的回归变量名
    clean_data <- 原始数据集[complete.cases(原始数据集[, c("变量1", "变量2", "变量3")]), ]
    
  • 剔除所有存在任意缺失值的样本(适合样本量充足、缺失占比很低的场景)
    # 直接删除所有含NA的行
    clean_data <- na.omit(原始数据集)
    

多数据集合并场景额外建议

后续需要将四个数据集按国家匹配合并后再做回归的话,建议先完成国家代码统一:

  • GEM的cntry、Hofstede的ctr、GPS的isocode均为三位ISO国家代码,可以直接作为匹配键
  • GLOBE数据集目前只有国家名,可先关联三位ISO代码后再合并
    合并完成后再统一做一次缺失值剔除,避免匹配过程中产生的新NA影响回归结果。

结果校验

处理完成后执行以下代码确认无残留缺失值:

sum(is.na(clean_data))

返回结果为0即说明数据集已无缺失值,可直接用于后续回归分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:45:03