删除特定变量的5%百分位数

时间:2018-07-13 14:06:01

标签: r outliers percentile

所以首先我知道有很多与此相关的主题,但是它们似乎涉及整个数据集。但是我想将其应用于特定变量,这给我造成了其他线程中未解决的问题。

所以我想删除变量“ cap”的5%off(低端和高端)。 这就是我尝试过的。

attach(nuclear)

#variable cap in set nuclear, i want to delete (after inspecting the percentles) for example everything under 5% for cap only. 
quantile(cap, c(.025, .050, 0.25, 0.50, .95, .975)) 


quantile(nuclear$Point, 0.05)
nuclear$cap %>% filter(Point < quantile(nuclear$Point, 0.05))

这就是我得到的

Error in UseMethod("filter_") : 
 no applicable method for 'filter_' applied to an object of class "c('double', 'numeric')"
  

1 个答案:

答案 0 :(得分:1)

如果您只是想删除上限内的变量中的值,则可以使用嵌套的ifelse循环。

类似这样的东西:

library(tidyverse)
nuclear %>%
mutate(cap = ifelse(cap > quantile(cap, probs = .95) |
                    cap < quantile(cap, probs = .5), NA, cap))

但是,如果要过滤整个数据集,则只需使用相同的代码即可,但要使用过滤器,而不要进行突变。希望这可以帮助。