J'ai un fichier de données qui ressemble à ceci: Je veux supprimer les 2 premières secondes de chaque ligne à chaque fois que la valeur de la vanne change, mais je n'ai aucune idée de la façon de faire ça . P> Je veux que ma sortie ressemble à quelque chose comme ceci: p>
3 Réponses :
Les éléments suivants doivent fonctionner
Cela ne fonctionnerait pas pour Valve = 2 code> dans les 3 dernières lignes séparément en tant que op mentionne
chaque fois que la valeur de la vanne change code>. Vous devez probablement utiliser
rleid code> aussi.
Merci de pointer sur @ronakshah, je modifierai la réponse en utilisant rleid code>
La chose est qu'il doit être une suppression basée sur le temps. Vous verrez, la trame de données que je décrise dans la question est une simplification excessive et les deux premières secondes ne sont pas toujours des deux premières lignes. Je m'excuse de ne pas clarifier cela dans la question.
Sur la base des données montrées, nous pouvons supposer que vous avez une lecture chaque seconde. Nous pouvons utiliser rleid code> à partir de
data.Table code> pour créer des groupes et supprimer les deux premières lignes de chaque groupe.
df <- structure(list(TIME = c("10:06:05", "10:06:06", "10:06:07",
"10:06:08", "10:06:09", "10:06:10", "10:06:11", "10:06:12", "10:06:13",
"10:06:14", "10:06:15", "10:06:16", "10:06:17", "10:06:18",
"10:06:19"), VALVE = c("2", "2", "2", "2", "2", "3", "3", "3", "3",
"4", "4", "4", "2", "2", "2")), row.names = c(NA, -15L), class =
"data.frame")
Alors, j'ai résolu mon problème en utilisant, J'ai d'abord créé une nouvelle colonne et l'a attribué un numéro pour chaque fois qu'une vanne modifiée p> qui me donnerait quelque chose comme ça p> Puis je: p> comme ceci: p> et obtenez quelque chose comme ceci: p> espère que cela aide. P> (putain! Je passe plus de temps en formatage de cette réponse que de travailler sur ce DF, quoi de neuf avec ça !?) P> P> dplyr :: group_by code> et
dplyr :: Mutate code> et
dplyr :: filtre code> code> basé sur ce post sur Github .
Qu'entendez-vous par «les 2 premières secondes de chaque ligne?» Je ne vois qu'un horodatage chaque rangée. Pourriez-vous ajouter le résultat attendu?
Vous pouvez utiliser:
dplyr :: Mutate () code>,
dplyr :: Case_Quend () code>,
dplyr :: plomb () code> et
:: remplir () code>
@Valentino J'ai ajouté un résultat attendu, désolé pour cela.