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]