代码之家  ›  专栏  ›  技术社区  ›  Thundersheep

删除特定变量的5%

  •  0
  • Thundersheep  · 技术社区  · 6 年前

    所以首先我知道有很多关于这个的话题,但它们似乎都是关于整个数据集的。但是我想把它应用到一个特定的变量上,这会给我带来其他线程没有解决的问题。

    所以我想删除5%的折扣(低端和高端)的变量“上限”。 这就是我试过的。

    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 回复  |  直到 6 年前
        1
  •  1
  •   Puddlebunk    6 年前

    如果您只是试图删除cap中变量的值,那么可以使用嵌套的ifelse循环。

    像这样的:

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

    但是,如果您想过滤整个数据集,那么只需在filter中使用相同的代码,而不是在mutate中使用。希望这有帮助。