【发布时间】:2014-01-26 04:29:58
【问题描述】:
这个问题与之前的问题here 部分相关。我想基于三列聚合计数,并获得由 date、id 和 rdate 三个变量定义的组的最后一个事件计数。我希望拥有的是这样的:
date rdate event
1 01-jan-90 08-jan-90 3
2 01-jan-90 15-jan-90 3
3 01-jan-90 01-jan-90 3
4 01-jan-90 22-jan-90 3
5 01-jan-90 29-jan-90 3
1.1 01-jan-90 08-jan-90 2
2.1 01-jan-90 15-jan-90 2
3.1 01-jan-90 01-jan-90 2
4.1 01-jan-90 22-jan-90 2
5.1 01-jan-90 29-jan-90 2
我已经尝试过这段代码,但这仅对获取组的平均值有效
aa<-aggregate(event ~ id+rdate+date,data = mydf,FUN=mean)
示例数据如下:
structure(list(date = c("01-jan-90", "01-jan-90", "01-jan-90",
"01-jan-90", "01-jan-90", "01-jan-90", "01-jan-90", "01-jan-90",
"01-jan-90", "01-jan-90", "01-jan-90", "01-jan-90", "01-jan-90",
"01-jan-90", "01-jan-90", "02-jan-90", "02-jan-90", "02-jan-90",
"02-jan-90", "02-jan-90", "02-jan-90", "02-jan-90", "02-jan-90",
"02-jan-90", "02-jan-90"), id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L), rdate = c("08-jan-90", "15-jan-90", "01-jan-90", "22-jan-90",
"29-jan-90", "08-jan-90", "15-jan-90", "01-jan-90", "22-jan-90",
"29-jan-90", "08-jan-90", "15-jan-90", "01-jan-90", "22-jan-90",
"29-jan-90", "09-jan-90", "16-jan-90", "02-jan-90", "23-jan-90",
"30-jan-90", "09-jan-90", "16-jan-90", "02-jan-90", "23-jan-90",
"30-jan-90"), event = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L)), .Names = c("date",
"id", "rdate", "event"), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "1.1", "2.1", "3.1", "4.1", "5.1", "1.2",
"2.2", "3.2", "4.2", "5.2", "6", "7", "8", "9", "10", "6.1",
"7.1", "8.1", "9.1", "10.1"))
【问题讨论】:
-
只需将您的函数更改为
length,即aggregate(event ~ id+rdate+date,data = mydf,FUN=length)。顺便说一句,+1 是可重现的好例子。 -
@SimonO101,感谢您回答我的问题。