按组计算Dplyr中的行:计算错误

按组计算Dplyr中的行:计算错误,r,dplyr,R,Dplyr,在使用group_by之后,我尝试使用dplyr计算行数。我有以下数据: scenario pertubation population A 1 20 B 1 30 C 1 40 D 1 50 A 2 15 B

在使用group_by之后,我尝试使用dplyr计算行数。我有以下数据:

scenario    pertubation    population    
   A            1             20
   B            1             30
   C            1             40
   D            1             50
   A            2             15
   B            2             25
我用下面的代码将_分组并进行变异:

test <- all_scenarios %>%
        group_by(scenario) %>%
        mutate(rank = dense_rank(desc(population)),
               exceedance_probability = rank / count(pertubation)) %>%
        select(scenario, pertubation, All.ages, rank, exceedance_probability) 
我希望我的输出数据如下所示:

scenario    pertubation    population  rank    exceedance_probability  
   A            1             20        12           0.06  
   B            1             30        7            0.035
   C            1             40        2            0.01 
   D            1             50        1            0.005
   A            2             15        34           0.17
   B            2             25        28           0.14

为了计算超越概率,我只需要将秩除以观察数,但我发现在一个group_by语句之后,在dplyr中很难做到这一点。我对dplyr语句的排序是否不正确?

我们可以单独获取
计数,并与原始数据集联接

all_scenarios %>% 
      count(pertubation) %>% 
      left_join(all_scenarios, ., by = 'pertubation') %>%
      group_by(scenario) %>%
      mutate(rank = dense_rank(desc(population)),  exceedance_probability = rank /n) 

或者不使用
count
,我们可以进行第二次
groupby
并获得
n()


您的问题来自

count(pertubation)
代码的一部分。在按方案分组时不能使用计数。我找不到一个很好的解释,但它不起作用。只用

n()

在代码中替换它。由于您是按场景分组的,并且每个场景的行数在数据集中是唯一的,因此通过计算每个场景中的行数,您实际上是在计算每个场景的值或行数。

count
应在data.frame上使用。您的示例和输出似乎有所不同。可能使用
all_scenarios%>%group_by(scenario)%>%mutate(秩=密集秩(描述(总体)),exceedance_probability=秩/表(pertubation))
count(pertubation)
n()