我需要使用 R 计算一些中间计算。这里是一些年份的一些事件及其类型的数据。
structure(list(year = c(1994, 1995, 1997, 1997, 1998, 1998, 1998,
2000, 2000, 2001, 2001, 2002), N = c(3L, 1L, 1L, 4L, 1L, 1L,
4L, 1L, 2L, 1L, 5L, 1L), type = c("OIL", "LNG", "AGS", "OIL",
"DOCK", "LNG", "OIL", "LNG", "OIL", "LNG", "OIL", "DOCK")), .Names = c("year",
"N", "type"), row.names = c(NA, 12L), class = "data.frame")
> head(mydf3)
year N type
1 1994 3 OIL
2 1995 1 LNG
3 1997 1 AGS
4 1997 4 OIL
5 1998 1 DOCK
6 1998 1 LNG
我需要按年份和类型获取有关 N 的累积总和的数据,今年的总累积总和以及所有类型的当前年份的累积总和。
所以我需要得到这样的信息
year type cntyear cnt_cumultype cnt_cumulalltypes
1994 OIL 3 3 3
1994 LNG 0 0 3
1994 AGS 0 0 3
1994 DOCK 0 0 3
1995 OIL 0 3 4
1995 LNG 1 1 4
1995 AGS 0 0 4
1995 DOCK 0 0 4
...
一些解释:
- cntyear - 这是当前年份和类型的 N 个计数。
- cnt_cumultype - 这是该类型到当前年份的累积总和。
- cnt_cumulalltypes - 这是所有年份的所有类型的累积总和,包括当前 <= 当前年份。
只是想做这样的事情,但它没有正常工作......
mydf3$cnt_cumultype<-tail(cumsum(mydf3[which(mydf3$type==mydf3$type & mydf3$year==mydf3$year),]$N), n=1)
如何按行计算这些数字?