Calcul d'indicateur sur une variable biniare
Bonjour, j'ai une table qui se présente comme ca.
par client j'ai un indicateur d'ouverture : 1 si ouverture et 0 sinon
Code:
1 2
|
tab = data.frame( id = c(rep('Cli1', 8), rep('Cli2',12)) , ouverture = c( 0,0,0,0,0,1,0,1, rep(0,12))) |
Je veux calculer par client combien d'émail pas ouvert après la dernière ouverture.
Dans mon exemple , cli1 c'est 5 ( puisque qu'il a ouvert le 6ème email) et cli2 c'est 12 puisqu'il a ouvert aucun email.
Merci de votre aide.
Calcul d'indicateur sur une variable binaire
Bonjour,
Une proposition :
Code:
1 2 3 4 5 6 7 8 9
| > tab$RepNo <- sequence(rle(as.vector(tab$id))$lengths)
> Ouv1 <- setNames(aggregate(RepNo ~ id, tab[which(tab$ouverture == 1),],FUN=min),c("id","Ouv1"))
> RepMax <- setNames(aggregate(RepNo ~ id, tab,FUN=max),c("id","RepMax"))
> resultat <- merge(Ouv1,RepMax,by="id",all=TRUE)
> resultat$NbNonOuv <- ifelse(!is.na(resultat$Ouv1),resultat$Ouv1-1,resultat$RepMax)
> resultat
id Ouv1 RepMax NbNonOuv
1 Cli1 6 8 5
2 Cli2 NA 12 12 |
Cordialement,