繁体   English   中英

如果语句为真,则使前360个值和后360个值不适用

[英]Make the previous 360 and following 360 values NA if the statement is true

我有一个值的数据框(以10分钟为步长,为3年),我希望如果障碍大于900,则x在该时间内获得NA,并且以前的360和随后的360个值也获得NA。 x和barrier包含NA。

我的数据框包括: 在此处输入图片说明

  • 时间df $ Time <-as.POSIXct(df $ Time,format =“%Y-%m-%d%H:%M”,tz =“ GMT”)[10分钟步长]
  • x我的价值我想通过障碍来解决的问题

  • 障碍物,如果障碍物超过900,则我的x值应为NA。df $ x <-ifelse(df $ barrier> 900,NA,df $ x)在这里可以看到。 在此处输入图片说明

但我也希望之前的6小时= 360值也应该获得NA,以及接下来的6小时= 360值x。

您可以在图片上看到,如果障碍(粉红色线)超过900,则先前和之后的值也会受到影响(跳跃),因此,我希望前后的x值也获得NA。 在此处输入图片说明

我的问题是我不知道如何删除x的上一个和下一个值

您可能会找到更优雅的方式,但这可行:

indeks <- df$barrier > 900
for(i in 1:360){
  if(indeks[i]==T){
    df$x[1:(i+360)] <- NA
  }
}
for(i in (360+1):(length(indeks)-361)){
  if(indeks[i]==T){
    df$x[(i-360):(i+360)] <- NA
  }
}
for(i in (length(indeks)-360):length(indeks)){
  if(indeks[i]==T){
    df$x[(i-360):lentgh(index)] <- NA
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM