You need to enable JavaScript to run this app. R语言pivot_wider与pivot_longer使用问题:出现NA及必要性问询
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:54:00