我的数据集如下:
Date Hour ID
2014-01-01 0 0
2014-01-01 1 0
2014-01-01 10 0
2014-01-01 11 0
我有一系列日期(2014年的所有日子)和一天中的24小时。如果ID为零,则表示在相应的日期和时间未收到任何呼叫。我想在24小时内汇总每个日期的结果,并返回一个新的数据框,其中包括日期和所调用的客户总数。我只需要对ID进行聚合,然后为此编写了以下代码行:
SampleData <- aggregate(ID ~ Date, SampleData, length)
然而,结果不是我想要的。我需要计算聚合的非零ID,但我不知道该怎么做。
答案 0 :(得分:4)
您可以传递aggregate
一个函数,该函数使用非零ID计算每天的行数:
aggregate(ID~Date, data, function(x) sum(x != 0))
# Date ID
# 1 2014-01-01 2
# 2 2014-01-02 0
数据(已更新,因此它有两个非零ID和两天):
(data = read.table(text="Date Hour ID
2014-01-01 0 0
2014-01-01 1 1
2014-01-01 10 2
2014-01-02 11 0", header=T))
# Date Hour ID
# 1 2014-01-01 0 0
# 2 2014-01-01 1 1
# 3 2014-01-01 10 2
# 4 2014-01-02 11 0