计算给定类别的几个变量的频率

时间:2016-06-20 03:12:00

标签: r

我有一张表格,其格式如下

time    ID
 1     4024
 1     4024
 1     4025
 1     4016
 2     4024
 2     4025
 2     4025
 3     4024
 3     4016
 3     4016

我想计算每个时间点每个ID的频率。例如,我想根据上表生成下表

time  4024   4025 4016
1      2      1    1
2      1      2    0
3      1      0    2

似乎aggregate函数可以提供帮助,但是如何在这种情况下使用它。感谢。

1 个答案:

答案 0 :(得分:1)

我们可以使用table

as.data.frame.matrix(table(df1))
#  4016 4024 4025
#1    1    2    1
#2    0    1    2
#3    2    1    0

或使用dcast

中的data.table
library(data.table)
dcast(setDT(df1), time ~ID, length)
#     time 4016 4024 4025
#1:    1    1    2    1
#2:    2    0    1    2
#3:    3    2    1    0

spread

中的tidyr
library(dplyr)
library(tidyr)
df1 %>%
   group_by(time, ID) %>%
   summarise(Count = n()) %>%
   spread(ID, Count, fill = 0)