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

R语言将8行选举数据框按选区分组重塑为2行宽表

你之前的dcast用法存在两处问题:一是公式左侧错误加入了CAND_NAME作为行标识,导致每个候选人单独保留一行;二是dcast单次只能处理单个值变量的宽化,你需要先整合多值变量再转换。两种实现方案如下:

方法1:使用tidyverse的pivot_wider(推荐,语法更直观)

library(tidyverse)
df_wide <- df %>%
  pivot_wider(
    id_cols = AC_NAME,
    names_from = POSITION,
    values_from = c(CAND_NAME, PARTYABBRE, TOTVOTPOLL, POSITION)
  )

生成的列名自动为CAND_NAME_1、CAND_NAME_2、PARTYABBRE_1等格式,你后续可以按需重命名。

方法2:使用reshape2的melt + dcast组合

如果你需要使用reshape2体系实现,需要先把数据转为长格式再宽化:

library(reshape2)
# 先把除AC_NAME、POSITION外的变量合并成长格式
df_long <- melt(df, id.vars = c("AC_NAME", "POSITION"))
# 再按选区聚合,变量+排名作为列名
df_wide <- dcast(df_long, AC_NAME ~ variable + POSITION, value.var = "value")

两种方法输出的结果结构完全一致,都能实现每个选区对应一行的宽表需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:39:02