R 基于另一列中的过去值标记一列中的行

R 基于另一列中的过去值标记一列中的行,r,indexing,data.table,R,Indexing,Data.table,可能是基本的,但我的头撞到墙上了 假设我有这个数据表: library(data.table) df <- data.frame(DaystoPeak = c(2,NA,NA,NA,NA,NA,3,NA,NA,NA,NA,NA), FlagPeak = c(0,0,1,0,0,0,0,0,0,1,0,0)) df <- data.table(df) df # DaystoPeak FlagPeak #1: 2

可能是基本的,但我的头撞到墙上了

假设我有这个数据表:

library(data.table)
df <- data.frame(DaystoPeak = c(2,NA,NA,NA,NA,NA,3,NA,NA,NA,NA,NA), 
                 FlagPeak = c(0,0,1,0,0,0,0,0,0,1,0,0))

df <- data.table(df)

df
 #   DaystoPeak FlagPeak
 #1:          2        0
 #2:         NA        0
 #3:         NA        1
 #4:         NA        0
 #5:         NA        0
 #6:         NA        0
 #7:          3        0
 #8:         NA        0
 #9:         NA        0
 #10:        NA        1
 #11:        NA        0
 #12:        NA        0
库(data.table)

df我认为这些评论有很多好的选择。但我可能会这样做:

df[, FlagPeak := 0][DaystoPeak + 1:.N, FlagPeak := 1]

这是因为
df[NA,FlagPeak:=1]
没有任何作用。

在RHS上尝试
tail
head
功能。像这样<代码>flag@rawr谢谢,效果很好!我想我也明白。我对这一切都不熟悉,所以接触这些东西很有帮助。非常感谢你!或者在
data.table
speak-
df[which(!is.na(DaystoPeak))+na.omit(DaystoPeak),FlagPeak:=1]
-作为旁白,您不需要像
df那样重新分配
w=which(!is.na(df$DaystoPeak));df[w+DaystoPeak[w],峰值:=1L]
。有一个对语法的开放特性请求,比如
FlagPeak[.I+2]:=
,我也想看看。
df <- df[, FlagPeak := ifelse(DaystoPeak == 2, c(0,0,1), FlagPeak)] 
df[, FlagPeak := 0][DaystoPeak + 1:.N, FlagPeak := 1]