【问题标题】:R: Calculate measurement time-points for separate samplesR:计算单独样品的测量时间点
【发布时间】:2019-03-21 05:44:16
【问题描述】:

我在 10 分钟间隔内测量了不同样品(系列)的 N2O 浓度。每个样品每天测量两次,持续 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 分钟测量周期?基本上它应该列出增加的nr。我的机器测量浓度的秒数。每一秒。

我的想法是按“系列”和“日期”分组并循环。灵感来自R: calculate time difference between specific events 比如:

library(dplyr)
df.HMR %>% group_by(DATE, Series) %>% 
  mutate(time_diff = ????)

非常感谢您的帮助!

【问题讨论】:

    标签: r tidyverse


    【解决方案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))
    

    【讨论】:

    • 谢谢@Bing Sun!不幸的是,我收到此错误消息: Fehler in mutate_impl(.data, dots) : Column dt must be length 1676 (group size) or one, not 379698. TIME 保存为“chr”,这应该没问题,不是吗?我认为问题在于我每天测量每个罐两次,所以我不能只按日期和系列分组,但我必须定义这应该对每个罐分别进行两次(上午和下午的会议)。最容易做到这一点是什么?提前致谢。
    • 我可以将“会话”(上午或下午的测量值)归入一个新列,并将其用于分组:df.HMR %>% group_by(DATE, Series, Session) %> % mutate(dt=as.POSIXct(TIME,format="%H:%M:%S", origin = lubridate::origin), time_diff = dt-lag(dt)) 1) 我是否使用了正确的信息"origin =..."? 2) 我仍然收到一条错误消息:Fehler in mutate_impl(.data, dots) : Column dt must be length 838 (group size) or one, not 379698 --> 我不知道'不明白为什么,因为我以前分组?如果有人可以帮助我会很高兴。提前谢谢。
    • 还有几个问题。需要更多数据来查看问题所在。最好提出一个新问题。
    猜你喜欢
    • 2013-07-12
    • 1970-01-01
    • 2011-08-04
    • 2018-04-26
    • 2017-01-25
    • 1970-01-01
    • 2013-02-21
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多