r-计算数据帧中一个组内出现的比率



我试图计算每组中nsum(n)之间的比率。我知道我离解决方案不远了。

数据:

df_rld %>% 
select(type, run_length) %>% 
mutate(run_length = as.numeric(run_length)) %>% 
group_by(type, run_length) %>% 
count(run_length)
type  | run_length | n 
---------------------------
A     |      15    | 1
B     |      24    | 3
B     |      26    | 7
C     |      27    | 10
C     |      28    | 2

我想要什么:

type  | run_length | n     | ratio
-----------------------------------------
A     |      15    | 1     | 1 / 1 = 1
B     |      24    | 3     | 3 / (3+7) = 0.3
B     |      26    | 7     | 7 / (3+7) = 0.7
C     |      27    | 10    | 10 / (10+2) = 0.83
C     |      28    | 2     | 2 / (10+2) = 0.17

比值分母是组对n的总和,但我不知道如何计算。使用group_by,我无法获得所有n的和,因此由于某种原因,比值等于1。为了简单起见,我不想加入表格。

您应该只按type分组,这样n/sum(n)将为您提供正确的计算。如果您同时按typerun_length分组,那么您将始终获得比率1(除非有两个条目具有相同的typerun_length值,在这种情况下,这些行中您将获得0.5(。

df_rld %>% 
select(type, run_length) %>% 
mutate(run_length = as.numeric(run_length)) %>% 
group_by(type, run_length) %>% 
count(run_length) %>%
group_by(type) %>% 
mutate(ratio = n/sum(n))
#> # A tibble: 5 x 4
#> # Groups:   type [3]
#>   type  run_length     n ratio
#>   <fct>      <int> <int> <dbl>
#> 1 A             15     1 1    
#> 2 B             24     3 0.3  
#> 3 B             26     7 0.7  
#> 4 C             27    10 0.833
#> 5 C             28     2 0.167

最新更新