R语言:如何将数据框Ano列的每个取值转换为列?
解决方法
你用separate函数找错工具了——这个函数是用来拆分单个单元格里的字符串内容的(比如把"1989"拆成四个单数字列),但你要的是把不同年份转成独立列,属于长表转宽表的操作,得用tidyr里的pivot_wider函数。
正确代码
先确保加载了tidyr和dplyr包,然后运行:
library(tidyr) library(dplyr) Num_casos_Sar_wide <- Num_casos_Sar %>% pivot_wider(names_from = Ano, # 指定要转成列的字段:年份 values_from = Not_Sarampo, # 指定对应列的取值:病例数 names_prefix = "Ano_") # 给年份列加前缀,避免列名以数字开头
转换后结果示例
处理后的宽表结构大致如下:
Cod_municip Ano_1985 Ano_1988 Ano_1989 Ano_2017 1 310110 NA NA 3 NA 2 310160 NA 0 NA NA 3 310350 6 NA NA NA 4 310620 NA 2 NA NA 5 310640 NA 0 NA NA 6 310670 NA NA NA 3
如果同一个城市有多个年份的数据,对应列会自动填充病例数;没有数据的位置默认显示NA,你可以加values_fill = 0参数把空值换成0。
内容的提问来源于stack exchange,提问作者Bruna Firmino
相关产品推荐
相关产品推荐

