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