如何用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
相关产品推荐
相关产品推荐

