在R语言中如何对多列data.frame执行reshape重塑操作
R data.frame 长表转宽表实现方案
问题原因
原有代码运行不符合预期,是因为你没有指定需要宽化的数值列为Area_ha2,同时数据集中的Bacia列既没有被设为id变量,也没有提前剔除,导致reshape函数默认对所有非id、非time变量做宽化处理,输出多余列。
可直接运行的调整代码
方案1:基础包reshape函数调整
补充v.names参数指定要展开的数值列,同时将Bacia加入id变量即可:
reshape(x, idvar = c("Bacia", "ano"), timevar = "Classe2", v.names = "Area_ha2", direction = "wide")
若不需要保留Bacia列,可提前筛选数据集:
reshape(x[, c("ano", "Classe2", "Area_ha2")], idvar = "ano", timevar = "Classe2", direction = "wide")
方案2:tidyverse pivot_wider实现(更推荐,逻辑清晰)
library(tidyr) pivot_wider(x, id_cols = c(Bacia, ano), names_from = Classe2, values_from = Area_ha2)
内容的提问来源于stack exchange,提问作者carvalhosantos
相关产品推荐
相关产品推荐

