0
votes

Comment changer `DateTime` à partir de` df1` à `DateTime2` à partir de` df2` quand `df1 $ datetime == df2 $ datetime`. Pour le reste des rangées de `df1`, je soustrai 60 ans

J'ai un dataframe df1 qui résume des informations différentes (i.e. profondeur ) Heures supplémentaires ( DateTime ). A titre d'exemple: xxx

dans un autre fichier de données df2 j'ai filtré df1 et j'ai calculé une nouvelle DateTime (appelé DateTime2 ) pour les lignes restantes, obtenez deux heures différentes dans df2 ( DateTime et datetime2 ). C'est un exemple de ce que j'aurais obtenu: xxx

Ce que je veux, c'est de modifier le DateTime dans df1 pour le rangées dans lesquelles df1 $ DateTime et df2 $ $ DateTime coïncide et modifie la valeur de df1 $ DateTime pour df2 $ datetime2 . Je souhaite également également graisser 60 secondes pour le reste des lignes pour lesquelles df1 $ DateTime et df2 $ DateTime ne coïncide pas. Je m'attendrais à ce que ceci: xxx

Est-ce que quelqu'un sait-il comment le faire?

merci !!


0 commentaires

3 Réponses :


2
votes

Vous pouvez utiliser gauche_join à partir de dplyr package: xxx


4 commentaires

Merci! Est-il nécessaire d'inclure la «profondeur» dans le code? Je veux dire, dans cet exemple, "Profondeur" n'a pas d'utilité d'utilité, il est vrai que si "DF1 $ DateTime == df2 $ DateTime ', alors" DF1 $ profond de profondeur == DF2 $ ".


@Dekike Je pense que c'est nécessaire car la ligne 1 et 2 ont le même DateTime dans df1 mais la valeur est modifiée uniquement pour la ligne 2. Pourquoi? Pourquoi? Pourquoi?


Désolé, j'ai commis une erreur ... Je n'ai pas changé DateTime dans la ligne 1 pour df1 . Je l'ai déjà changé. Pouvons-nous le faire sans utiliser profondeur ? Je le mentionne que, dans mes données réelles, la colonne profondeur n'existe pas. Je l'ai inclus comme un exemple de ce qu'il y a d'autres variables dans le Dataframe.


@Alexb, thaks pour votre réponse. Comme je l'ai mentionné à Ronak Shah, j'ai oublié de mentionner que pour le reste des lignes de df1 pour lesquels datetime ne correspond pas à DateTime de DF2 , je veux soustraire 60 secondes d'eux. Est-il facile d'inclure cela dans votre code proposé? Merci!



2
votes

Vous pouvez gaucher_join par "DateTime" et "de la profondeur" , puis utilisez coalesce xxx


3 commentaires

Je suppose que maintenant que j'ai corrigé mon erreur sur DateTime dans df1 , je peux laisser une profondeur du code, je ne peux pas?


J'ai oublié d'inclure dans ma question que je voulais aussi que je voulais aussi que le reste des lignes de df1 pour lesquels datetime ne coïncide pas avec DateTime de DF2 , je veux soustraire 60 secondes. Je vais y inclure cela dans le post, savez-vous comment le faire? Je suppose que c'est facile pour vous. Désolé pour mon erreur.


Vous êtes génial! Merci!!



1
votes

Une option à l'aide de data.Table joint à la mise à jour de la carte code> S. xxx pré>

sortie: p>

              DateTime Depth
1: 2017-08-12 10:17:21    24
2: 2017-08-12 11:42:56    12
3: 2017-08-12 12:21:16    35
4: 2017-08-12 13:23:43    54
5: 2017-08-12 14:34:14    13
6: 2017-08-12 15:47:28    32


0 commentaires