我有一些数据(如下所示),我想要删除其中的异常值。我想删除第一个百分位数和第99个百分位数之外的所有观察值。问题是有很多NA观察。我想保留这些NA观察结果。
combined
date change_cds
<date> <dbl>
2005-12-31 -2.5975486
2005-11-30 -1.5873349
2005-11-30 NA
2005-11-30 NA
2005-11-30 -31.7240875
2005-12-31 -8.7011377
2005-12-31 9.5310180
2005-12-31 -18.9242000
2005-12-31 -3.8466281
2005-12-31 5.7158414
2005-11-30 13.0053128
2005-11-30 10.2129495
2005-11-30 NA
2005-11-30 -13.9152604
2005-11-30 -9.1434206 以前,我有这样的代码,当数据集中没有NA时,它可以工作:
combined <- combined %>%
filter(change_cds < quantile(combined$change_cds, (1-0.01)) & change_cds > quantile(combined$change_cds, 0.01))然而,在引入NA之后,代码就会分崩离析。我希望排除除NA观测值之外的第一个和第99个百分位数之外的所有观测值。但我希望保留所有具有NA变量的行。
提前谢谢。
发布于 2021-05-23 11:26:51
你可以使用-
library(dplyr)
combined <- combined %>%
filter(change_cds < quantile(change_cds, 0.99, na.rm = TRUE) &
change_cds > quantile(change_cds, 0.01, na.rm = TRUE) | is.na(change_cds)))在R基中-
combined <- subset(combined, change_cds < quantile(change_cds, 0.99, na.rm = TRUE) &
change_cds > quantile(change_cds, 0.01, na.rm = TRUE) | is.na(change_cds))https://stackoverflow.com/questions/63990617
复制相似问题