R: Рассчитать временные точки измерения для отдельных образцов.
Я измерил концентрации N2O для разных образцов (серии) в течение 10 минутных интервалов. Каждый образец измеряли два раза в день в течение 9 дней. Анализатор N2O сохраняет данные (конц.) Каждую секунду!
Мои данные теперь выглядят так:
DATE Series V A TIME Concentration
1: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:00.746 0.3512232
2: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:01.382 0.3498687
3: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:02.124 0.3482681
4: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:03.216 0.3459306
5: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:04.009 0.3459124
6: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:04.326 0.3456660
Я хотел бы проанализировать газовые потоки, используя пакет R HMR. Для этого мне нужно рассчитать временные точки измерения в порядке возрастания точек данных точного времени (TIME). Время должно выглядеть примерно так (таблица взята из https://cran.r-project.org/web/packages/HMR/HMR.pdf).
Series;V;A;Time;Concentration
k0a; 140.6250; 0.5625; 0; 13.98
k0a; 140.6250; 0.5625; 10; 14.65
k0a; 140.6250; 0.5625; 20; 15.15
k0a; 140.6250; 0.5625; 30; 15.85
Как я могу рассчитать это для каждого отдельного 10-минутного периода измерения для каждого банка? В основном это должно перечислить увеличивающийся номер. секунд, пока моя машина измеряла конц. каждую секунду.
Моя идея состоит в том, чтобы сгруппировать по "Серии" и "ДАТА" и сделать цикл. Вдохновленный R: рассчитать разницу во времени между конкретными событиями Что-то вроде:
library(dplyr)
df.HMR %>% group_by(DATE, Series) %>%
mutate(time_diff = ????)
Буду очень признателен за вашу помощь!
1 ответ
Использование lag
может решить проблему.
df.HMR=read.table(text="No DATE Series V A TIME Concentration
1: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:00.746 0.3512232
2: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:01.382 0.3498687
3: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:02.124 0.3482681
4: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:03.216 0.3459306
5: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:04.009 0.3459124
6: 2017-10-18T00:00:00Z O11 0.004022 0.02011 10:16:04.326 0.3456660",
header=T,stringsAsFactors=FALSE)
df.HMR %>% group_by(DATE, Series) %>%
mutate(dt=as.POSIXct(df.HMR$TIME,format="%H:%M:%S"), time_diff = dt-lag(dt))