Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据R中的其他变量删除不符合阈值的数据_R_Optimization_Threshold - Fatal编程技术网

根据R中的其他变量删除不符合阈值的数据

根据R中的其他变量删除不符合阈值的数据,r,optimization,threshold,R,Optimization,Threshold,我正在尝试删除在恶劣条件下收集的特定数据(NEE)(Ustar

我正在尝试删除在恶劣条件下收集的特定数据(NEE)(Ustar DoY是一年中的某一天,Ustar是一个描述条件的变量,NEE是在低Ustar值下抛出的观测值。季节性阈值标记为THSU 1、2、3或4,具体取决于一年中的时间。坏数据标记为-999(由于其他程序的要求),但可以设置为NA,然后在以后更改,如果这样可以提高代码的效率

这是两年(峰值13和峰值14),年不需要相同的长度。阈值在多年内是相同的,并且只针对特定的季节

这是我当前的设置:

for (i in 1:length(Peaches13$DoY)){
  if((Peaches13$DoY[i] < 90)&&(Peaches13$Ustar[i] < ths_1)){
    Peaches13$NEE[i] <- -999
    }
  if((Peaches13$DoY[i] < 180)&&(Peaches13$DoY[i] >= 90)&&(Peaches13$Ustar[i] < ths_2)){
    Peaches13$NEE[i] <- -999
  }
  if((Peaches13$DoY[i] < 270)&&(Peaches13$DoY[i] >= 180)&&(Peaches13$Ustar[i] < ths_3)){
    Peaches13$NEE[i] <- -999
  }
  if((Peaches13$DoY[i] >= 270)&&(Peaches13$Ustar[i] < ths_4)){
    Peaches13$NEE[i] <- -999
  }
}

for (i in 1:length(Peaches14$DoY)){
  if((Peaches14$DoY[i] < 90)&&(Peaches14$Ustar[i] < ths_1)){
    Peaches14$NEE[i] <- -999
  }
  if((Peaches14$DoY[i] < 180)&&(Peaches14$DoY[i] >= 90)&&(Peaches14$Ustar[i] < ths_2)){
    Peaches14$NEE[i] <- -999
  }
  if((Peaches14$DoY[i] < 270)&&(Peaches14$DoY[i] >= 180)&&(Peaches14$Ustar[i] < ths_3)){
    Peaches14$NEE[i] <- -999
  }
  if((Peaches14$DoY[i] >= 270)&&(Peaches14$Ustar[i] < ths_4)){
    Peaches14$NEE[i] <- -999
  }
}
for(1中的i:长度(峰值13$DoY)){
如果((峰值13$DoY[i]<90)和&(峰值13$Ustar[i]Peaches13$NEE[i]您不需要for循环。例如,您的第一个for循环可以替换为:

badValues <- with(Peaches13,
                (((DoY < 90)&(Ustar < ths_1)) | 
                ((DoY < 180)&(DoY >= 90)&(Ustar < ths_2)) | 
                ((DoY < 270)&(DoY >= 180)&(Ustar < ths_3)) | 
                ((DoY >= 270)&(Ustar < ths_4)) ) )

Peaches13$NEE[badValues] <- -999
badValues=90)和(Ustar=180)和(Ustar=270)和(UstarPeaches13$NEE[badValues]第一个解决方案将导致所有NEE值变为-999,前提是任何DoY小于90且任何Ustar小于THSU 1,而不是满足这两个条件的特定观察值。第二个解决方案似乎存在相同的问题。问题(如果您尝试运行脚本)我忘了将
&
操作符(只计算每个向量的第一个元素)更改为
&
操作符(对每个元素进行操作)。除此之外,这个脚本应该可以工作。如果id不起作用,请尝试在帖子中包含一些数据(即
dput(head(Peaches13,10))
)。
library(dplyr)
df <- mutate(Peaches13, NEE = ifelse(badValues , -999, NEE))