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 fort> p> df2 fort> p> colonne est déjà dans "posixct" format " p> p>
3 Réponses :
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')
Vous pouvez utiliser une jointure de roulement données utilisée p>
avec qui donne p> base r code>, ici est fourni avec deux approches pouvant vous aider à le faire,
FindInterval () Code>: Li>
ul>
quel.max () code>: li>
ul>
Quelle cartographie voulez-vous utiliser? Est à tout moment de
06:00:00 code> à
06:10:00 code> dans
df1 code> une correspondance au
06:00:00 CODE> TIME IN
DF2 CODE>? Je suppose que cela dépend de savoir si
df2 code> 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.