首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果语句为真,则使前面的360及以下360值NA

如果语句为真,则使前面的360及以下360值NA
EN

Stack Overflow用户
提问于 2018-09-06 09:25:48
回答 1查看 40关注 0票数 0

我有一个数据的数值(3年10分钟的步骤),我想,如果屏障大于900,x得到NA的时间,而之前的360和以下的360值也得到NA。X和势垒中含有NAs。

我的数据包括:

  • 时间df$ Time <- as.POSIXct(df$Time,format="%Y-%m-%d %H:%M",tz="GMT") 10分钟步骤
  • 我的价值,我想按屏障分类的东西
  • 屏障,如果屏障超过900,我的x值应该得到与df$x <- ifelse(df$屏障> 900,NA,df$x)一起工作的NA,您可以在这里看到。

但是我想要的是,之前的6小时=360值应该得到NA,接下来的6小时= 360值是x的值。

您可以在图片上看到,如果屏障(粉色线)超过900,前面和下面的值也会受到影响(跳转),因此我希望在获取之前和之后的x值也是NA。

我的问题是,我不知道如何删除之前和下面的x值。

EN

回答 1

Stack Overflow用户

发布于 2018-09-06 13:22:09

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

代码语言:javascript
复制
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
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52200869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档