【问题标题】:Count rows satisfying "less than" filter for sequence of values计数满足“小于”过滤器的值序列的行
【发布时间】:2020-10-21 15:01:15
【问题描述】:

我有一个包含很多次的数据集。假设我想创建一个汇总表,计算满足“小于”过滤器的一系列值的行数,例如 [时间

示例数据集:

data.frame(personId = c("2009ZEMD01", "2012PARK03", "2017VILL41", "2010WEYE01", "2016KOLA02", "2012PONC02"), 
           average = c(553, 559, 598, 606, 612, 613))

这是我使用sapply的解决方案:

  tibble(time = 6:15, 
         count = sapply(time, function(t) best_3x3_solvers %>% filter(average/100 < t) %>% nrow)) 

结果:

> solvers_under
# A tibble: 10 x 2
    time count
   <int> <int>
 1     6     3
 2     7    48
 3     8   274
 4     9   840
 5    10  1952
 6    11  3792
 7    12  6269
 8    13  9459
 9    14 13204
10    15 17274

代码不算太长,但是有没有没有*apply的使用更多tidyverse工具的方法?也许summarizen()

【问题讨论】:

    标签: r filter count tidyverse


    【解决方案1】:

    dplyrpurrr 选项可以是:

    map_dfr(.x = 6:15,
            ~ df %>%
             group_by(time = .x) %>%
             summarise(count = sum(average/100 < .x)))
    
        time count
       <int> <int>
     1     6     3
     2     7     6
     3     8     6
     4     9     6
     5    10     6
     6    11     6
     7    12     6
     8    13     6
     9    14     6
    10    15     6
    

    【讨论】:

    • 嗯,那么maplapplymap_dfr 的tidyverse 版本,将rowwise 与匿名函数组合成df?唯一令人困惑的是group_by的使用。
    • 是的,purrr 包含可以被视为tidyverse 等效于lapply()mapply() 的函数:)
    【解决方案2】:

    你可以使用汇总、计数和过滤

    df%>%group_by(time)%>%summarise(count = n())%>%filter(count < t)
    

    【讨论】:

    • 你确定这是我想要的吗?哪里来的?
    • 我想我已经正确理解了您的问题,但也许没有。 t 将是您需要的过滤器,即
    【解决方案3】:

    这是一种方法:

    library(dplyr)
    library(purrr)
    
    map_df(6:15, ~df %>% summarise(time = .x, count = sum(average/100 < .x)))
    
    #    time count
    # 1     6     3
    # 2     7     6
    # 3     8     6
    # 4     9     6
    # 5    10     6
    # 6    11     6
    # 7    12     6
    # 8    13     6
    # 9    14     6
    #10    15     6
    

    【讨论】:

    • 所以map_dfmap_dfr 相同?
    • 大部分时间,是的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    相关资源
    最近更新 更多