6
votes

R Comment identifier la distance de la dernière occurrence

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. xxx

Ce que je voudrais calculer est une autre colonne qui montre la "distance" à la dernière occurrence.

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


0 commentaires

3 Réponses :


5
votes

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


2 commentaires

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



2
votes

Une approche utilisant l'encodage de longueur d'exécution ( rle ) et séquence (qui est un wrapper pour Unlist (nvec, SEQ_LEN)) xxx


1 commentaires

Alternativement: d [ distance: = ifelse (lumière, 0, séquence (rle (lumière) $ Longueur))]



4
votes

Cela devrait le faire: xxx

ou ceci: xxx

et si vous souhaitez compter réellement le nombre de jours par opposition à Distance de ligne, vous pouvez utiliser: xxx


0 commentaires