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

如何用R将数据框中anio列的类别转为多列?已尝试pivot_wider未成功

解决方法

你可以用tidyr包的pivot_wider()函数实现这个需求,核心是指定好行标识列、列名来源列和值来源列,同时添加列名前缀:

library(tidyr)

df1 <- data.frame(familia=c("Gonzales","Perez","Martinez","Gonzales","Perez","Martinez"), 
                  anio=c(2020,2020,2020,2021,2021,2021), 
                  numero=c(3,4,2,2,4,1))

df2 <- pivot_wider(df1,
                   id_cols = familia,  # 作为行唯一标识的列
                   names_from = anio,  # 要转换为新列名的原始列
                   values_from = numero,  # 填充新列值的原始列
                   names_prefix = "anio")  # 给新生成的列名添加前缀"anio"

# 查看结果
df2

运行后得到的结果与你需要的df2完全一致:

familia anio2020 anio2021
1 Gonzales        3        2
2    Perez        4        4
3 Martinez        2        1

如果你习惯使用reshape2包,也可以用dcast()函数实现:

library(reshape2)
df2 <- dcast(df1, familia ~ paste0("anio", anio), value.var = "numero")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:37:10