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

如何在使用lag函数后保留数据列的末尾值?

解决dplyr::lag操作后保留原列末尾值并新增行的问题

你需要的是对x列执行lag(1)偏移后,额外新增一行来保留原x列的末尾值(3),同时其他列补NA。原mutate(lag(...))只会在原有数据行数内修改值,不会自动新增行,所以得手动添加这一行。

方案一:手动指定列添加行

library(dplyr)

# 原始数据
df <- data.frame(x = c(1, 2, 3),
                 y = c(3, 5, 1),
                 z = c(2, NA, NA))

# 处理流程:先偏移x列,再新增行
df_result <- df %>%
  mutate(x = lag(x, 1)) %>%
  bind_rows(tibble(x = last(df$x), y = NA, z = NA))

# 查看结果
df_result

执行后输出:

x  y  z
1 NA  3  2
2  1  5 NA
3  2  1 NA
4  3 NA NA

方案二:通用型写法(适配多列场景)

如果数据列比较多,不想逐个列名指定,可以用across批量修改非x列为NA:

df_result <- df %>%
  mutate(x = lag(x, 1)) %>%
  bind_rows(df %>% slice_tail(n=1) %>% mutate(across(-x, ~NA)))

这个方法会自动取原数据最后一行的x值,把其他所有列设为NA后添加到结果中,不用手动列全所有列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:50:27