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

R语言如何通过新增列合并DataFrame重复行实现长表转宽表

R长表转宽表实现方案

你原有代码运行异常的核心原因是基础R的reshape函数对timevar对应的变量格式要求较严格,你的Round列大概率是未指定水平的字符型,或者存在拼写/空格不一致的异常值,导致无法正确拆分列。

方案1:使用tidyr包的pivot_wider(推荐,写法更简洁不易出错)

如果未安装tidyr先运行install.packages("tidyr"),之后执行以下代码即可:

library(tidyr)
df_wide <- pivot_wider(df, names_from = Round, values_from = SC)

运行后直接得到你需要的宽表结构,列名自动匹配Round的取值。

方案2:修正基础R reshape写法

如果要使用基础包实现,先统一Round列的格式为指定水平的因子,再调用reshape并明确指定值列参数:

# 先修正Round列为因子,按你需要的顺序指定水平,注意和你实际数据的取值完全匹配
df$Round <- factor(df$Round, levels = c("Round 1", "Round 2", "Round 3"))
# 调用reshape时显式指定v.names参数
df_wide <- reshape(df, idvar = "Player", timevar = "Round", v.names = "SC", direction = "wide")
# 如果需要去掉列名的SC.前缀,可以加一步修改列名
colnames(df_wide) <- gsub("SC\\.", "", colnames(df_wide))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:42:01