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

将多国家政党选择变量合并为统一是非变量的技术求助

解决方案

不需要单独为每个国家生成是非变量再合并,直接通过逻辑判断或变量合并就能一步生成目标变量,以下是两种常用的实现方式:

场景1:每个受访者仅对应一个东道国(更符合研究场景)

如果你的数据中每个土耳其侨民只属于一个欧洲东道国(即仅对应国家的投票变量有值,其余三个为NA),可以先用coalesce合并四个国家的投票变量,再转换为0/1/NA的数值型变量:

library(dplyr)

# 第一步:合并四个国家的投票变量为统一的原始字段
D <- D %>%
  mutate(host_vote_raw = coalesce(partyvotedger, partyvotedfra, partyvotednl, partyvoteduk))

# 第二步:转换为与vote_turkey一致的0/1/NA变量
D <- D %>%
  mutate(
    vote_host = case_when(
      host_vote_raw == "none" ~ 0,  # "none"对应未投票
      !is.na(host_vote_raw) ~ 1,    # 政党名称对应已投票
      TRUE ~ NA_real_               # 全NA时保留缺失值
    )
  )

如果需要生成"yes"/"no"/NA的字符型变量,只需修改case_when的输出:

D <- D %>%
  mutate(
    vote_host_char = case_when(
      host_vote_raw == "none" ~ "no",
      !is.na(host_vote_raw) ~ "yes",
      TRUE ~ NA_character_
    )
  )

场景2:受访者可能在多个东道国存在投票记录

如果存在同一受访者在多个国家有投票记录的情况,可直接通过逻辑判断生成目标变量:

library(dplyr)

# 生成数值型0/1/NA变量
D <- D %>%
  mutate(
    vote_host = case_when(
      # 任意一个国家的变量为政党名称 → 已投票(1)
      (!is.na(partyvotedger) & partyvotedger != "none") |
      (!is.na(partyvotedfra) & partyvotedfra != "none") |
      (!is.na(partyvotednl) & partyvotednl != "none") |
      (!is.na(partyvoteduk) & partyvoteduk != "none") ~ 1,
      # 任意一个国家的变量为"none"且无政党记录 → 未投票(0)
      (!is.na(partyvotedger) & partyvotedger == "none") |
      (!is.na(partyvotedfra) & partyvotedfra == "none") |
      (!is.na(partyvotednl) & partyvotednl == "none") |
      (!is.na(partyvoteduk) & partyvoteduk == "none") ~ 0,
      # 其余情况(全NA)保留缺失值
      TRUE ~ NA_real_
    )
  )

基础R实现(无需dplyr)

如果你习惯用基础R,可通过嵌套ifelse或apply函数实现:

# 合并原始变量(针对场景1)
D$host_vote_raw <- apply(D[, c("partyvotedger", "partyvotedfra", "partyvotednl", "partyvoteduk")], 1, function(x) x[!is.na(x)][1])

# 转换为0/1/NA变量
D$vote_host <- ifelse(D$host_vote_raw == "none", 0, ifelse(!is.na(D$host_vote_raw), 1, NA))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:31:03