Je veux calculer combien de temps cela s'est passé depuis quelque chose.
Compte tenu de ce qui suit, vous pouvez voir que la lumière est sur une partie du temps, mais pas tout le temps. Je veux normaliser les données pour le nourrir à un réseau neuronal. P> Ce que je voudrais calculer est une autre colonne qui montre la "distance" à la dernière occurrence. P> Donc pour les données ci-dessus:
première rangée, car elle devrait être zéro
Deuxième rangée, devrait être 1
troisième rangée, devrait être 2
quatrième rangée, devrait être zéro p> p>
3 Réponses :
Je suggérerais de créer une colonne de regroupement en fonction du moment où il y a un commutateur de FALSE à TRUE:
d
date light distance
1: 2013-06-01 TRUE 0
2: 2013-06-02 FALSE 1
3: 2013-06-03 FALSE 2
4: 2013-06-04 TRUE 0
5: 2013-06-05 TRUE 0
6: 2013-06-06 FALSE 1
7: 2013-06-07 FALSE 2
8: 2013-06-08 TRUE 0
Pourquoi la recommandation sur les autres solutions apparemment plus simples? Est-ce une considération de perfection? Plus correct d'une certaine manière?
Nope, juste comment cela m'est arrivé d'aborder le problème. Personnellement, j'aime les solutions d'Eddi
Une approche utilisant l'encodage de longueur d'exécution ( rle code>) et séquence code> (qui est un wrapper pour Unlist (nvec, SEQ_LEN)) code>
Alternativement: d [ distance: = ifelse (lumière, 0, séquence (rle (lumière) $ Longueur))] code>
Cela devrait le faire: ou ceci: p> et si vous souhaitez compter réellement le nombre de jours par opposition à Distance de ligne, vous pouvez utiliser: p>