Je dois calculer quelques calculs intermédiaires en utilisant R. Voici les données concernant certains événements et leurs types pendant quelques années.Calcul d'une valeur pour une ligne courante dans une base de données utilisant un sous-ensemble dans 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
J'ai besoin pour obtenir les données sur la somme cumulative de N par année et le type, la somme cumulée totale cette année et somme cumulative pour l'année en cours jusqu'à ce que tous les types.
donc j'ai besoin d'obtenir des informations comme ce
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
...
Quelques explications:
- cntyear - cela compte N pour l'année et le type de courant.
- cnt_cumultype - somme cumulative pour ce type jusqu'à l'année en cours.
- cnt_cumulalltypes - somme cumulative pour tous les types pour tous ans, y compris l'actuel < = année en cours.
Je voulais juste faire quelque chose comme ça, mais il n'a pas travaillé droit ...
mydf3$cnt_cumultype<-tail(cumsum(mydf3[which(mydf3$type==mydf3$type & mydf3$year==mydf3$year),]$N), n=1)
Comment calculer ce nombre par lignes?
S'il vous plaît passer un peu de temps pour expliquer le calcul de vos trois nouvelles variables. Votre sortie désirée n'est pas suffisante pour les distinguer (pour moi au moins). – lmo
fait, ajouter quelques explications – twistfire
Donc, dans votre sortie désirée, ne devrait pas 1995 huile 3 pour cnt_cumultype? – lmo