0
votes

Fusionner deux dataframes avec différentes gammes de temps en répétant des valeurs dans la plage de temps dans R

J'ai deux données de données distinctes, toutes deux avec une colonne d'informations de temps, avec des intervalles de temps différents. Le premier DF1 a des intervalles de temps en secondes (~ 6s) et l'autre (DF2) a des intervalles de temps de 10min. Je souhaite fusionner les deux dataframes, en conservant les informations de DF, répétant les valeurs DF2 dans la plage de temps dans DF1. Comme ceci:

df1 xxx

df2 xxx < p> sortie que je veux xxx

colonne est déjà dans "posixct" format "


3 commentaires

Quelle cartographie voulez-vous utiliser? Est à tout moment de 06:00:00 à 06:10:00 dans df1 une correspondance au 06:00:00 TIME IN DF2 ? Je suppose que cela dépend de savoir si df2 a des estimations du point de localisation ou une moyenne et, si moyenne, sur quelle heure.


Fournissez un Reprex . Cela aide qui répond à votre question et, donc cela vous aide aussi.


Non, le temps dans DF1 commence à une heure différente de la DF2, je devrais donc prendre des intervalles, par exemple à partir de 06:00:00 jusqu'à 06:10:00 Je dois répéter les valeurs des autres variables (TEMP.AR, Ur AR et Vel. Vento) de 06:10:00 à DF2, et ainsi de suite.


3 Réponses :


1
votes

Probablement l'approche la plus généralisable consiste à définir un ensemble de fenêtres de temps, puis à utiliser FindInterval code> pour localiser l'index de l'heure dans chaque cadre de données. Vous pouvez ensuite utiliser fusionnez code> pour amener les deux ensemble:

# This is what Gabriel means by a reprex - if you provide the data in 
# loadable form it is much easier to help
df1 <- read.table(text="  x   y   z     time
-52 -39 -35 06:08:03
-47 -57 -36 06:08:08
-39   2 -40 06:08:13
-45 -23 -29 06:10:20
-51 -11 -31 06:10:29
-69 -28 -19 06:20:34", header=TRUE, stringsAsFactors=FALSE)

df2 <- read.table(text="time        Temp.ar  Ur.ar  Vel.Vento
06:00:00    14.79    78.5   1.147
06:10:00    14.74    78.9   1.045
06:20:00    14.9     78.9   1.009
06:30:00    15.14    78.6   1.076
06:40:00    15.32    77.8   1.332
06:50:00    15.6     76.5   1.216", header=TRUE, stringsAsFactors=FALSE)

df1$time <- strptime(df1$time, '%H:%M:%S')
df2$time <- strptime(df2$time, '%H:%M:%S')

# I'm just using the existing sequence in df2 as the time windows, but
# you could set up different ones
df1$interval <- findInterval(df1$time, df2$time)
df2$interval <- findInterval(df2$time, df2$time)

df3 <- merge(df1, df2, by='interval')


0 commentaires

0
votes

Vous pouvez utiliser une jointure de roulement xxx

données utilisée xxx


0 commentaires

0
votes

avec base r , ici est fourni avec deux approches pouvant vous aider à le faire,

  • Utilisation de FindInterval () : xxx
    • en utilisant quel.max () : xxx

      qui donne xxx

      données xxx


0 commentaires