J'essaie de combiner deux grandes trames de données contenant des données de température provenant de plusieurs enregistreurs de données. Les enregistreurs de données et les noms de colonnes sont les mêmes dans chaque trame de données. Une trame de données contient des valeurs plus récentes que l'autre trame de données.Comment ajouter des données en fonction des valeurs de date qui se chevauchent?
Les données ressemble fondamentalement ceci:
date.time date temp1 temp2
2011-08-22 19:00 2011-08-22 11.265 5.562
2011-08-22 20:00 2011-08-22 11.254 6.541
2011-08-22 22:00 2011-08-22 12.256 5.456
2011-08-22 23:00 2011-08-22 13.568 15.265
date.time<-c("2011-08-22 19:00", "2011-08-22 20:00", "2011-08-22 22:00","2011-08-22 23:00")
date<-c("2011-08-22","2011-08-22","2011-08-22","2011-08-22")
temp1<-c(11.265,11.254,12.256,13.568)
temp2<-c(5.562,6.541,5.456,15.265)
df_old<-data.frame(date.time,date,temp1,temp2)
Et:
date.time date temp1 temp2 temp3
2011-08-22 22:00 2011-08-22 12.256 5.456 24.598
2011-08-22 23:00 2011-08-22 13.568 15.265 11.265
2011-08-22 24:00 2011-08-22 11.275 5.563 25.295
2011-08-23 00:00 2011-08-23 11.254 6.544 24.689
date.time<-c("2011-08-22 22:00", "2011-08-22 23:00", "2011-08-22 24:00","2011-08-23 00:00")
date<-c("2011-08-22","2011-08-22","2011-08-22","2011-08-23")
temp1<-c(12.256,13.568,11.275,11.254)
temp2<-c(5.456,15.265,5.563,6.544)
temp3<-c(24.598,11.265,25.295,24.689)
df_new<-data.frame(date.time,date,temp1,temp2,temp3)
Je veux rejoindre ces ensemble de la longueur en fonction des valeurs partagées dans la colonne date.heure pour obtenir:
date.time date temp1 temp2 temp3
2011-08-21 19:00 2011-08-22 11.265 5.562 NA
2011-08-21 20:00 2011-08-22 11.254 6.541 NA
2011-08-21 22:00 2011-08-22 12.256 5.456 24.598
2011-08-21 23:00 2011-08-22 13.568 15.265 11.265
2011-08-21 24:00 2011-08-22 11.275 5.563 25.295
2011-08-21 00:00 2011-08-23 11.254 6.544 24.689
J'ai essayé juste d'ajouter l'un à l'autre en utilisant rbind.fill.
df_all<-rbind.fill(df_old, df_new)
Cela ne tient pas compte du nombre différent de colonnes. Cependant, il ajoute simplement les colonnes l'une au-dessus de l'autre au lieu de placer des lignes avec des valeurs partagées dans la colonne date.time. J'ai essayé de chercher comment faire cela mais j'ai seulement trouvé comment fusionner des blocs de données côte-à-côte en fonction des valeurs dans une colonne partagée mais pas comment les fusionner de haut en bas quand il y a chevauchement valeurs.
Merci!
Aussi 'library (dplyr); full_join (df_old, df_new) '. – eipi10