0
votes

Comment appliquer une fonction de roulement pour trouver le nombre de vraies valeurs booléennes précédentes à l'aide de r

est-il possible de créer une colonne qui est le nombre de roulements du nombre de valeurs vraies booléennes à partir des 4 lignes précédentes, également partitionnée par une autre colonne?

L'exemple ci-dessous montre le résultat souhaité, où la colonne de sortie est Le nombre de nombres de valeurs vraies pour les 4 rangées précédentes - ceci est également partitionné par la première colonne. Y a-t-il une façon de le faire avec dplyr? p>

Exemple de données: P>

a   2016-01-01  TRUE   0
a   2016-01-02  TRUE   1
a   2016-01-03  FALSE  2
a   2016-01-04  FALSE  2
a   2016-01-05  FALSE  2
a   2016-01-06  FALSE  1
a   2016-01-07  FALSE  0
a   2016-01-08  TRUE   0
a   2016-01-09  TRUE   1
a   2016-01-10  TRUE   2
a   2016-01-11  TRUE   3
b   2016-01-01  TRUE   0
b   2016-01-02  TRUE   1
b   2016-01-03  FALSE  2
b   2016-01-04  TRUE   2
b   2016-01-05  FALSE  3
b   2016-01-06  TRUE   2
b   2016-01-07  TRUE   2
b   2016-01-08  FALSE  3
b   2016-01-09  FALSE  2
b   2016-01-10  FALSE  2
b   2016-01-11  FALSE  1


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser group_by () code> et profiter du fait que Boolean a également des représentations numériques.

library(dplyr)
library(zoo)

df %>%
  group_by(col1, col2) %>%
  mutate(col4 = rollsum(col3, k = 4) - col3)


0 commentaires

0
votes

Les valeurs booléennes comptent comme 1 pour T et 0 pour F, vous pouvez donc exploiter cela pour utiliser Cumsum. xxx


0 commentaires

0
votes

Base R Réponse:

df$col4<- cumsum(lag(df$col2, 4, default = 0))


0 commentaires