Je voudrais calculer la différence de date entre chaque entrée. Les données ressemblent à ceci et ce que je veux obtenir est que STH ressemble à la suivi, comment construire var "diff"? P> mise à jour: p> J'ai essayé de résoudre ceci en utilisant des codes suivants: p> Je ne suis pas sûr de ce que j'ai mal fait. Aucune idée? P> p>
4 Réponses :
Que diriez-vous de ce: sortie: p>
C'est un moyen très intelligent. Je ne savais pas cela avant de me montrer. Merci beaucoup. Si je veux obtenir le max (diff) par ID, que dois-je faire? Guidez-moi s'il-vous-plaît. Merci d'avance. :-)
Ceci est le code que j'ai essayé "DT $ Durée <- Unité irréaliste (neclly (Split (DT, DT $ ID), fonction (x) C (max (X $ DIFF)))"
Vous voulez juste que le max diff? Labayly (Split (DT, DT $ ID), Fonction (X) max (Diff (Date de DI $))) CODE>, vous pouvez modifier PApply code> sur SAPPLY < / code> pour une sortie différente.
Merci beaucoup pour la réponse rapide. ITRIED SUIVANT LES CODES ET ENTRAÎNEMENT LES CODES D'ERREUR. Que dois-je faire afin d'ajouter une variable à chaque enregistrement avec Max DIFF Info: DT $ MAX <- Un ecriste (actif (DT, DT $ ID), fonction (x) max (DIFF (DATE DIFT))))))))))))))))) Erreur dans Définir (x, j = nom, valeur = valeur): fourni 3 éléments à attribuer à 9 éléments de colonne 'max'. Si vous souhaitez "recycler" le RHS, veuillez utiliser Rep () pour que cette intention soit claire des lecteurs de votre code.
Vous voudrez répéter le nombre par le montant correct pour chaque identifiant. Unlist (académique (Sply (Split (DT, DT $ ID), fonction (x) représentant (max (DIFF)), nrow (x)))) code>
Merci beaucoup pour votre guidage. Votre gentillesse et votre patience sont très appréciées. Je suis un débutant (juste commencer à apprendre à travailler pendant 4 semaines) et était inquiet de demander trop de questions. Je ne peux pas dire assez grâce à vous pour votre gentillesse. Oui. Ça marche!
Peut-être pas élégant par peut-être performant en utilisant diff sur tous et écraser entre l'ID.
dt$diff <- c(NA, diff(dt$date)) dt$diff[c(TRUE, dt$id[-1] != dt$id[-nrow(dt)])] <- NA dt # id date diff #1 A 2017-01-01 NA #2 A 2017-02-01 31 #3 A 2017-05-01 89 #4 B 2017-01-01 NA #5 B 2017-05-01 120 #6 B 2017-10-01 153 #7 C 2017-01-01 NA #8 C 2017-02-01 31 #9 C 2017-02-15 14
Solution Tairyverse:
library(tidyverse) dt %>% group_by(id) %>% mutate(diff = date - lag(date)) id date diff <chr> <date> <drtn> 1 A 2017-01-01 NA days 2 A 2017-02-01 31 days 3 A 2017-05-01 89 days 4 B 2017-01-01 NA days 5 B 2017-05-01 120 days 6 B 2017-10-01 153 days 7 C 2017-01-01 NA days 8 C 2017-02-01 31 days 9 C 2017-02-15 14 days
J'ai pensé à cela, mais pour une raison quelconque, je ne pouvais pas obtenir les mêmes résultats que le vôtre. Pourriez-vous jeter un coup d'œil à mes codes et voir ce que j'ai mal fait? S'il vous plaît voir mon poste mis à jour pour les détails. Merci beaucoup.
Avez-vous peut-être chargé plyr code> après dplyr code>? Cela devrait fonctionner: dt%>% dplyr :: group_by (id)%>% dplyr :: muté (diff = date de date (date)) code>
De rien! Cool, content que ça marche!
une option avec data.Table code>