0
我需要使用R計算一些中間計算。 以下是有關某些事件及其類型在某些年份的數據。使用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)
如何按行計算這個數字?
請花一些時間來解釋你的三個新變量的計算。你想要的輸出不足以區分它們(至少對我來說)。 – lmo
完成後,添加一些解釋 – twistfire
那麼,在你想要的輸出中,cnt_cumultype不應該是1995年的油? – lmo