You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pivot_wider转换ADP就业数据时返回NA值的问题

解决ADP NER数据pivot_wider返回NA的问题

问题背景

处理ADP月度全国就业报告(NER)数据时,尝试用pivot_wider将category列的每个类别转为单独列,但多次尝试后分类列值均为NA。原始数据可通过以下代码加载:

National_Employment_Report <- read.csv("https://raw.githubusercontent.com/InfiniteCuriosity/forecasting_jobs/main/ADP_NER_history.csv")

问题诊断

核心原因是未指定用于行分组的唯一标识(此处为date列)。pivot_wider需要明确哪些行属于同一组(即同一日期的不同类别数据),才能将不同category的值映射到同一行的对应列中。之前的代码要么缺失分组标识,要么错误地按category分组,导致无法正确对齐数据。

解决方案

1. 基础转换(无重复日期-类别组合)

保留date作为每行的唯一标识,直接转换宽表:

library(tidyverse)

ADP_wide <- National_Employment_Report %>%
  pivot_wider(
    id_cols = date,          # 指定分组依据为日期,确保同一日期的不同类别归到同一行
    names_from = category,   # 从category列提取新列名
    values_from = NER_SA     # 新列对应的值来自NER_SA列
  )

# 查看转换结果
head(ADP_wide)

2. 处理重复日期-类别组合

如果数据中存在同一日期同一类别的多条记录,可通过values_fn指定聚合方式(如求和、均值):

ADP_wide <- National_Employment_Report %>%
  pivot_wider(
    id_cols = date,
    names_from = category,
    values_from = NER_SA,
    values_fn = sum  # 按需求替换为mean、first等聚合函数
  )

错误代码分析

  • 第一次尝试未指定id_cols,pivot_wider默认用所有非目标列分组,若数据存在其他无关列会导致分组过细,每个组仅含单一类别,其他列自然为NA。
  • 第二次尝试用group_by(category)后,每个分组仅包含单一类别,转换后其他类别列无对应值,因此全为NA。

内容的提问来源于stack exchange,提问作者Russ Conte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:05:04