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

如何在R中选取指定行的前n行?求dplyr实现方案(含场景)

在R中用dplyr创建基于过去三年x值的虚拟变量y

原始数据

首先定义你的数据框:

df <- data.frame(year = seq(1990, 1997, 1),
                 x = c(1, 0, 0, 0, 1, 1, 0, 0))

方法一:仅用dplyr(无需额外包)

利用lag()函数获取前1、前2行的x值,结合case_when()判断条件:

library(dplyr)

df <- df %>%
  mutate(y = case_when(
    # 前两行数据不足三年,设为NA
    row_number() < 3 ~ NA_real_,
    # 当前行及过去两年中任意x为1时,y=1
    x == 1 | lag(x, 1) == 1 | lag(x, 2) == 1 ~ 1,
    # 其余情况y=0
    TRUE ~ 0
  ))

方法二:结合slider包(适合灵活调整窗口大小)

如果后续需要调整窗口范围,用slider包的滚动窗口函数更方便:

library(dplyr)
library(slider)

df <- df %>%
  # 滑动窗口包含当前行及前2行,共3行;仅窗口完整时计算
  mutate(y = slide_dbl(x, ~any(.x == 1), .before = 2, .complete = TRUE)) %>%
  # 将逻辑值转为1/0
  mutate(y = ifelse(y, 1, 0))

最终结果

运行上述代码后,数据框会生成符合要求的y变量:

year x  y
1 1990 1 NA
2 1991 0 NA
3 1992 0  1
4 1993 0  0
5 1994 1  1
6 1995 1  1
7 1996 0  1
8 1997 0  1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:44:49