У меня есть данные измерения CO2 по 30 датчикам, которые не все измеряют одновременно, и не все они запускаются в одно и то же время.Я хотел бы выровнять их как можно лучше, поэтому я подумал, что взятие средних значений по 10 может быть хорошим решением.
В предыдущем вопросе: Группировка по нескольким переменным и суммирование dplyr Я вырезалвремя в 10 с порциях для каждого датчика и усреднение показаний каждого датчика за эти 10 с.Звучит нормально, но я понял, что следующий код сокращает время с любого времени запуска каждого датчика, и поэтому они все еще не выровнены.Как я могу выровнять их?
require(tidyverse)
require(lubridate)
df %>%
group_by(Sensor, BinnedTime = cut(DeviceTime, breaks="10 sec")) %>%
mutate(Concentration = mean(calCO2)) %>%
ungroup()
head(df)
# A tibble: 6 x 7
# Groups: BinnedTime [1]
Sensor Date Time calCO2 DeviceTime cuts BinnedTime
<fctr> <date> <time> <dbl> <dttm> <fctr> <chr>
1 N1 2019-02-12 13:24 400 2019-02-12 13:24:02 (0,10] 2019-02-12 13:24:02
2 N1 2019-02-12 13:24 400 2019-02-12 13:24:02 (0,10] 2019-02-12 13:24:02
3 N1 2019-02-12 13:24 400 2019-02-12 13:24:03 (0,10] 2019-02-12 13:24:03
4 N2 2019-02-12 13:24 400 2019-02-12 13:24:03 (0,10] 2019-02-12 13:24:02
5 N3 2019-02-12 13:24 400 2019-02-12 13:24:03 (0,10] 2019-02-12 13:24:02
6 N3 2019-02-12 13:24 400 2019-02-12 13:24:05 (0,10] 2019-02-12 13:24:04
Редактировать
Я пытался:
dt<-seq(
from=as.POSIXct("2019-02-12 13:24:00", tz="GMT"),
to=as.POSIXct("2019-02-12 14:00:00", tz="GMT"),
by="10 sec"
)
cut(df$BinnedTime,dt)
, но выдает ошибку, в которой x должен быть числовым, поэтому я преобразовал df$BinnedTime
и dt$dt
к числовому, и это дает только NA.
cut(as.numeric(as.POSIXct(df$BinnedTime)), as.numeric(dt))
Чего мне не хватает?
Редактировать 2
У меня есть следующее:
df$DeviceTime <- as.POSIXct(paste(d$Date, d$Time), format="%Y-%m-%d %H:%M:%S")
df<-df%>%
mutate(BinnedTime=floor_date(ymd_hms(DeviceTime),unit="10 sec"))%>%
group_by(Sensor)%>%
group_by(BinnedTime,add=TRUE)%>%
summarize(calCO2 = mean(na.omit(calCO2)))
То, что я думаю сейчас, то, что я ищу, но это не элегантно
Вот файл данных в onedrive: df.txt до 30 марта 19