按组计算Dplyr中的行:计算错误
在使用group_by之后,我尝试使用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
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()