У меня есть 3 таблицы в базе данных Access с одинаковыми именами столбцов (TempDate
и Temp
), но разными отметками времени. Данные собирались с 10-минутными интервалами, но каждое из записывающих устройств имело разное время запуска. Я хочу объединить их в одну таблицу с одним столбцом TempDate и одним столбцом Temp для каждой из таблиц (temp1, temp2, temp3).
Мне нужна помощь в том, как это сделать в Access или R. Я начал использовать R с кодом MySQL, но я все еще новичок в этом. Заранее спасибо. В конечном итоге я хочу присоединить эти данные к другому фрейму данных с отметкой даты и времени того же периода дат. Я думаю, что смогу с этим справиться, если кто-нибудь покажет мне, как это группировать по интервалам. Затем, наконец, постройте с помощью ggplot
Данные
temp1<-data.frame(TempDate=c("2020/08/11 07:13:01","2020/08/11 07:23:01","2020/08/11 07:33:01","2020/08/11 07:43:01"),Temperature=c(1.610,-1.905,-1.905,-0.901))
temp2<-data.frame(TempDate=c("2020/08/11 07:10:01","2020/08/11 07:20:01","2020/08/11 07:30:01","2020/08/11 07:40:01"),Temperature=c(15.641,15.641,15.641,15.641))
temp3<-data.frame(TempDate=c("2020/08/11 07:19:01","2020/08/11 07:29:01","2020/08/11 07:39:01","2020/08/11 07:49:01"),Temperature=c(2.062,3.573,4.076,4.579))
> temp3 #as example
TempDate Temperature
1 2020/08/11 07:19:01 2.062
2 2020/08/11 07:29:01 3.573
3 2020/08/11 07:39:01 4.076
4 2020/08/11 07:49:01 4.579
#what I want row 1 is temps recorded from 07:10:00-07:29:59, etc
>
TempDate Temp1 Temp2 Temp3
1 2020/08/11 07:10:00 1.610 15.641 2.062
2 2020/08/11 07:20:00 -1.905 15.641 3.573
3 2020/08/11 07:30:00 -1.905 15.641 4.076
4 2020/08/11 07:40:00 -1.901 15.641 4.579
ОБНОВЛЕНИЕ: Спасибо Бену за отличный ответ, который помог мне приступить к решению этой проблемы. Задавая другой вопрос, было предложено floor_date
. Этот код работал с моими данными лучше, чем функция вырезания @Ben. При использовании сокращения я бы получил время, заканчивающееся на 9 (12:19) вместо 0 (12:10). Я также пробовал TempDate+60
в функции вырезания, но тогда некоторые даты получали время в следующем 10-минутном интервале. Приведенный ниже код был более точным.
library(lubridate)
tempdata<-bind_rows(burrow=burrow,shade=shade,sun=sun,.id='Series') %>%
mutate(TempDate = as.POSIXct(TempDate, tz="UTC"),
TimeStamp = floor_date(TempDate, unit='10 mins'),
TimeStamp = as.POSIXct(TimeStamp, tz="UTC")) %>%
filter(TimeStamp > as.POSIXct("2020-08-12 13:29:00", tz="UTC")) %>%
select(Series, Temperature,TimeStamp) %>%
arrange(TimeStamp)