0
votes

Comment calculer la différence de date avec r

Je voudrais calculer la différence de date entre chaque entrée. Les données ressemblent à ceci xxx

et ce que je veux obtenir est que STH ressemble à la suivi, comment construire var "diff"?

 Entrez la description de l'image ici

mise à jour:

J'ai essayé de résoudre ceci en utilisant des codes suivants: xxx

Je ne suis pas sûr de ce que j'ai mal fait. Aucune idée?


0 commentaires

4 Réponses :


1
votes

Que diriez-vous de ce: xxx

sortie: xxx


6 commentaires

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 $))) , vous pouvez modifier PApply 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))))


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!



0
votes

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


0 commentaires

0
votes

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


3 commentaires

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 après dplyr ? Cela devrait fonctionner: dt%>% dplyr :: group_by (id)%>% dplyr :: muté (diff = date de date (date))


De rien! Cool, content que ça marche!



0
votes

une option avec data.Table xxx


0 commentaires