R - 数据分组

时间:2017-09-07 19:57:29

标签: r dataframe aggregate

我有以下方式的数据集:

 Incoming_Day  STU_ID
1 2016-04-27 A033548
2 2017-05-18 A034571
3 2017-01-27 A034623
4 2016-01-04 A100170
5 2016-01-05 A100170

我想制作一个数据框,每天都会显示出来的学生数量。

我使用了以下代码:

df <- aggregate(data.frame(count = df$STU_ID), list(Incoming_Day= df$Incoming_Day), length); df[1:5,]

然而,我得到的结果是每天的观察次数。我相信我在这里犯了一个简单的错误。我怎样才能纠正它?

2 个答案:

答案 0 :(得分:2)

aggregatedDF <- aggregate(data = df, STU_ID ~ Incoming_Day , 
                          function(x) length(unique(x)) )

答案 1 :(得分:1)

尝试使用函数(x),然后使用 length(unique(x)),如下所示:

aggregate(data.frame(count=df$STU_ID),list(Incoming_Day=df$Incoming_Day),
          function(x) length(unique(x)))

输出:

  Incoming_Day count
1   2016-01-04     1
2   2016-01-05     2
3   2016-04-27     1
4   2017-01-27     1
5   2017-05-18     1

示例数据:

df <- fread("Incoming_Day  STU_ID
             2016-04-27 A033548
             2017-05-18 A034571
             2017-01-27 A034623
             2016-01-04 A100170
             2016-01-05 A100170
             2016-01-05 A100170
             2016-01-05 A100172")