У меня есть датафреймы df1
и df2
. df1
суммирует различные моменты (df1$Theor.DateTime
), в которые, теоретически, устройство отправляет информацию спутникам. Мы знаем это благодаря переменной df1$Delay
, которая указывает интервал секунд между различными излучениями от устройства к спутникам. df2
суммирует конкретные c раз (df2$Real.DateTime
), в которые спутники получали информацию об этом устройстве. Как видно из приведенного ниже примера, nrow(df2)
меньше, чем nrow(df1)
, поскольку некоторые излучения не поступают на спутники по разным причинам. Вы также можете видеть, что df2$Real.DateTime
не совпадает точно с df1$Theor.DateTime
по разным причинам. Всегда есть задержка между излучением и приемом сигнала спутниками.
options("digits.secs" = 3)
df1 <- data.frame(Theor.DateTime= c("2018-03-22 12:00:00.000","2018-03-22 12:00:30.040","2018-03-22 12:01:15.800","2018-03-22 12:02:15.700","2018-03-22 12:02:45.350","2018-03-22 12:03:15.002","2018-03-22 12:04:00.065","2018-03-22 12:05:15.430","2018-03-22 12:06:00.060","2018-03-22 12:06:45.002"),
Delay= c(30,45,60,30,30,45,75,45,45,60))
df1$Theor.DateTime <- as.POSIXct(df1$Theor.DateTime, format="%Y-%m-%d %H:%M:%OS",tz="UTC")
head(df1)
Theor.DateTime Delay
1 2018-03-22 12:00:00.000 30
2 2018-03-22 12:00:30.039 45
3 2018-03-22 12:01:15.799 60
4 2018-03-22 12:02:15.700 30
5 2018-03-22 12:02:45.349 30
6 2018-03-22 12:03:15.002 45
df2 <- data.frame(Real.DateTime= c("2018-03-22 12:00:02.000","2018-03-22 12:02:20.540","2018-03-22 12:02:42.800","2018-03-22 12:05:18.700","2018-03-22 12:06:33.700"))
df2$Theor.DateTime <- as.POSIXct(df1$Theor.DateTime, format="%Y-%m-%d %H:%M:%OS",tz="UTC")
df2
Real.DateTime
1 2018-03-22 12:00:02.00
2 2018-03-22 12:02:20.53
3 2018-03-22 12:02:42.79
4 2018-03-22 12:05:18.70
5 2018-03-22 12:06:33.70
Я хочу создать кадр данных с информацией одновременно df1
и df2
. Я хочу объединить в одной строке df1$Theor.DateTime
и df2$Real.Datetime
, когда df2$Real.Datetime
находится в пределах 5-секундного интервала (+ - 5 секунд) относительно df1$Theor.DateTime
. Я также хочу создать столбец с именем Reception.success
, который указывает, совпадает ли указанный c df1$Theor.DateTime
с df2$Real.Datetime
(ИСТИНА или ЛОЖЬ), указывая, что излучение было получено.
Я бы ожидайте, что:
> df3
Theor.DateTime Delay Reception.success Real.DateTime
1 2018-03-22 12:00:00.000 30 TRUE 2018-03-22 12:00:02.000
2 2018-03-22 12:00:30.040 45 FALSE <NA>
3 2018-03-22 12:01:15.800 60 FALSE <NA>
4 2018-03-22 12:02:15.700 30 TRUE 2018-03-22 12:02:20.540
5 2018-03-22 12:02:45.350 30 TRUE 2018-03-22 12:02:42.800
6 2018-03-22 12:03:15.002 45 FALSE <NA>
7 2018-03-22 12:04:00.065 75 FALSE <NA>
8 2018-03-22 12:05:15.430 45 TRUE 2018-03-22 12:05:18.700
9 2018-03-22 12:06:00.060 45 FALSE <NA>
10 2018-03-22 12:06:45.002 60 FALSE <NA>
Кто-нибудь знает, как это получить?
Заранее спасибо