如果满足另一列中的条件,如何让 R 对列中的值进行计数?

How to get R to count a value in a column if it meets a criteria in another column?

假设我有一个数据集,其中包含每个 class 中高个子和矮个子学生的数量。

Class tall_short count percentage
A     tall       2     17%       
A     short      3     20%       
B     tall       4     33%       
B     short      5     33%       
C     tall       6     50%       
C     short      7     47%       

我有前 3 列的数据框。 如何创建百分比列,显示每个 class 中 tall/short 名学生占所有 tall/short 名学生的百分比。

你可以做到

df %>% 
  group_by(tall_short) %>% 
  mutate(percentage = count / sum(count))

并使用 scales::label_percent 获得正确的格式:

df %>% 
  group_by(tall_short) %>% 
  mutate(percentage = scales::label_percent()(count / sum(count)))

  Class tall_short count percentage
  <chr> <chr>      <int> <chr>     
1 A     tall           2 17%       
2 A     short          3 20%       
3 B     tall           4 33%       
4 B     short          5 33%       
5 C     tall           6 50%       
6 C     short          7 47%