R语言pivot_wider与pivot_longer使用问题:出现NA及必要性问询
问题解答
1、当前场景下我是否完全不需要使用pivot_longer?
是,完全不需要使用。你最终仅需展示annualavgr这一个指标的年度宽表,没有多列指标需要合并为长格式,pivot_longer属于完全冗余的操作,直接对原始数据做宽表转换即可。
2、运行代码后出现NA值的原因是什么?
出现NA的核心原因是你在select阶段保留了不需要的annualavg列,触发了pivot_wider的默认逻辑:
- 执行
pivot_longer后,你的数据列包括areaname、periodyear、annualavg、measure、value pivot_wider默认会把所有未指定给names_from、values_from的列作为行唯一标识(即id_cols),此处annualavg每一行的取值都不同,导致每一行只会对应一个年度的有效值,其余年度全部填充为NA。
修正后可直接输出预期结果的代码
library(tidyverse) library(gt) areaname<-c("Clark County","Clark County","Clark County","Clark County","Clark County","Clark County","Clark County","Clark County","Clark County","Clark County","Someplace","Someplace","Someplace","Someplace","Someplace","Someplace","Someplace","Someplace","Someplace","Someplace") periodyear<-c(2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020) annualavg<-c(17.56,18.66,19.25,20.35,21.45,22.33,22.44,32.15,33.14,47.555,17.59,18.99,19.33,2.35,88.45,2.33,29.44,36.15,39.14,47.51) table<-data.frame(areaname,periodyear,annualavg) table$annualavgr <- round(table$annualavg,digits = 0) chart17 <- table %>% select(areaname, periodyear, annualavgr) %>% pivot_wider(names_from = periodyear, values_from = annualavgr) %>% gt()
内容的提问来源于stack exchange,提问作者Tim Wilcox
相关产品推荐
相关产品推荐

