R 中特定字符串在整个时间内出现的百分比

Percentage of occurrence of a specific string throughout time in R

我有这样一个数据库:

Individual      Year     ID
A                1       R
A                1       S
A                1       T
A                2       T
B                1       T
B                5       T
C                7       S
D                9       K
D                8       H
E                1       S

数据库中有数千人。

每个人与 none,每年一个或多个 ID 相关联(例如,个人 A 在第一年有 3 个不同的 ID,而个人 D 在第 10 年只有一个 ID,没有其他信息)

我正在尝试研究 ID“S”多年来的演变,并绘制了一个折线图,其中:
x 轴包含年份
y 轴百分比(#ID S/ # 所有个人的年度 ID 总数)

在这个例子中我的输出应该是:

Year       Percentage of S
1           0,5
2           0
5           0
7           1
8           0
9           0

第一年的值是用 3(第一年的 ID S 总数)除以 6(第一年注册的 ID 总数)得到的。

谢谢

编辑

正如@akrun 所指出的,有一个更直接的方法:

library(dplyr)

df %>% 
  group_by(Year) %>% 
  summarise(perc_of_s = mean(ID == "S"))

你可以使用

library(dplyr)

df %>% 
  group_by(Year) %>% 
  summarise(perc_of_s = sum(ID == "S") / n())

这个returns

# A tibble: 6 x 2
   Year perc_of_s
  <dbl>     <dbl>
1     1       0.4
2     2       0  
3     5       0  
4     7       1  
5     8       0  
6     9       0  

第一年只有五个ID,其中两个是S,所以百分比是0.4