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

R语言按城市分组生成滞后列报错:object 'temp' not found

问题解决:按分组生成滞后列并处理NA值

原始数据框

city_name             Date                 temp      hum    
   London       2022-01-01                    0       10
   London       2022-01-02                    7        8
   London       2022-01-03                    3        6
   London       2022-01-04                    7        7     
   London       2022-01-05                   10        8 
    Paris       2022-01-01                   11        3
    Paris       2022-01-02                   NA        2
    Paris       2022-01-03                    9       NA
    Paris       2022-01-04                   10        7
    Paris       2022-01-05                   11        9

需求说明

  • 按city_name分组
  • 为temp和hum生成1阶、2阶滞后列(temp_lag1、temp_lag2、hum_lag1、hum_lag2)
  • 原字段值为NA时,对应滞后列也设为NA

报错原因

你的代码存在三个关键问题:

  1. 第二段代码中group_by(city_name)后缺少管道符%>%,导致后续mutate无法识别分组后的数据集,找不到temp列
  2. 最后一段代码写错字段名:原字段是hum,但误写为rltv_hum,触发对象未找到错误
  3. 重复调用group_by和as.data.frame,操作冗余且可能破坏分组状态

修正后的代码

通过单管道流完成所有操作,同时用ifelse实现NA值的同步处理:

library(dplyr)

df <- df %>%
  group_by(city_name) %>%
  mutate(
    # 处理temp的滞后列:当前temp为NA时,对应滞后列设为NA
    temp_lag1 = ifelse(is.na(temp), NA, lag(temp, n = 1)),
    temp_lag2 = ifelse(is.na(temp), NA, lag(temp, n = 2)),
    # 处理hum的滞后列:当前hum为NA时,对应滞后列设为NA
    hum_lag1 = ifelse(is.na(hum), NA, lag(hum, n = 1)),
    hum_lag2 = ifelse(is.na(hum), NA, lag(hum, n = 2))
  ) %>%
  ungroup() # 可选:不需要分组状态时取消分组

最终输出

运行代码后将得到符合需求的结果:

city_name             Date    temp       hum  temp_lag1  temp_lag2  hum_lag1   hum_lag2
   London       2022-01-01       0       10         NA         NA        NA         NA
   London       2022-01-02       7        8          0         NA        10         NA
   London       2022-01-03       3        6          7          0         8         10
   London       2022-01-04       7        7          3          7         6          8
   London       2022-01-05      10        8          7          3         7          6
    Paris       2022-01-01      11        3         NA         NA        NA         NA
    Paris       2022-01-02      NA        2         11         NA         3         NA
    Paris       2022-01-03       9       NA         NA         11         2          3
    Paris       2022-01-04      10        7          9         NA        NA          2
    Paris       2022-01-05      11        9         10          9         7         NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:05:17