首页 > 解决方案 > 用特定公式计算因子的频率

问题描述

我有这样的数据集:

df <- data.frame( ID = c("A","A","A","B","B","B","C","C","C"), 
                       levels = c( "Y", "R", "O","Y", "R", "O","Y", "R", "O" ),
                       Counts=c(5,1,5,10,2,1,3,5,8))

  ID levels Counts
  A      Y      5
  A      R      1
  A      O      5
  B      Y     10
  B      R      2
  B      O      1
  C      Y      3
  C      R      5
  C      O      8

我想创建另一个具有第二列(级别)百分比的列,如这个公式

freq=(Y+O/Y+O+R)*100

所以现在数据框应该是这样的:

ID freq
A  0.1
B  0.2
C  0.3

我尝试了几个解决方案,但都没有奏效,您能帮帮我吗?

标签: r

解决方案


使用pivot_wider

df1 %>%
  pivot_wider(id_cols = ID, values_from = Counts, names_from = levels) %>%
  mutate(freq = (Y+O/Y+O+R)*100,
         freq. = (Y+O)/(Y+O+R)*100) # %>% select(-Y, -R, -O)

  ID        Y     R     O  freq freq.
  <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 A         5     1     5 1200   90.9
2 B        10     2     1 1310   84.6
3 C         3     5     8 1867.  68.8

我不确定你的公式想要什么。


推荐阅读