按组计算值之间的差异并匹配时间

2024-03-03

对于每只鸟,我想计算不同日期的平均每小时体温 (Tb) 测量值 (Tb_Periods) 之间的差异。我的目标是能够比较 BirdX 从 0900 PreI 到 09:00 DayI、10:00 PreI 到 10:00 PostI 等的 Tb 变化。 Tb_Period 代表操作前的时间 (PreI)、操作日(DayI)和后期处理(PostI)。我的初始 df:

    Date_Time           Bird_ID  Tb   Hour  Treatment  Tb_Period
    2018-04-04 11:01:39   3282   42.2  11    Control     PreI
    2018-04-04 12:31:51   3282   41.2  12    Control     PreI
    ....
    2018-04-05 09:16:54   3282   41.9   9    Control     DayI
    ....
    2018-04-06 08:09:57   3282   41.4   8    Control     PostI

到目前为止我所做的:在 48 小时的时间内每 10 分钟测量每只鸡的体温,因此我首先使用 dplyr 计算每只鸡每小时的平均 Tb:

    Tb_Averages <- TbData %>% group_by(Tb_Period, Hour, Bird_ID, Treatment)%>% 
                          summarize(meanHourTb = mean(Tb))

结果 df:

         Tb_Period  Hour  Bird_ID  Treatment  meanHourTb
         PreI        9      3500       LPS    41.55000
         PreI        10     3500       LPS    41.75000       
         ...
         DayI        9      3500       LPS    40.88182
         DayI        10     3500       LPS    41.24000

现在我想要的是一个看起来像这样的 df :

         Bird_ID  Hour  Treatment  Tb_Diff 
          3500     9      LPS        -.67 (40.88-41.55)
          3282     9      LPS         .5 (e.g.)

根据来自的回答按组计算连续行中的值之间的差异 https://stackoverflow.com/questions/14846547/calculate-difference-between-values-in-consecutive-rows-by-group,我尝试过以下变体(使用 dplyrs 排列功能):

           Tb_Averages <- Tb_Averages %>%
           group_by(Tb_Period, Bird_ID, Hour) %>%
           mutate(Tb_Diff = c(NA, diff(meanHourTb))))

但继续获取 Tb_Diff 列的 NA。解决这个问题的最佳方法是什么(最好使用 dplyr)?


你快到了!关键是将 Tb_Period 转换为有序因子,这样PreI被视为“小于”DayI,这又小于PostI。一旦建立,我们可以按每只鸟和小时进行分组,并按 Tb_Period 排序,以确保按正确的顺序计算差异:

df <- read.table(text = 'Tb_Period  Hour  Bird_ID  Treatment  meanHourTb
PreI        9      3500       LPS    41.55000
PreI        10     3500       LPS    41.75000       
DayI        9      3500       LPS    40.88182
DayI        10     3500       LPS    41.24000', header = T, stringsAsFactors = F)

df <- df %>% 
  mutate(Tb_Period = factor(Tb_Period, c('PreI', 'DayI', 'PostI'), ordered = T)) %>% 
  group_by(Bird_ID, Hour) %>% 
  mutate(diff = meanHourTb - lag(meanHourTb, 1))

# A tibble: 4 x 6
# Groups:   Bird_ID, Hour [2]
  Tb_Period  Hour Bird_ID Treatment meanHourTb     diff
      <ord> <int>   <int>     <chr>      <dbl>    <dbl>
1      PreI     9    3500       LPS   41.55000       NA
2      PreI    10    3500       LPS   41.75000       NA
3      DayI     9    3500       LPS   40.88182 -0.66818
4      DayI    10    3500       LPS   41.24000 -0.51000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按组计算值之间的差异并匹配时间 的相关文章

  • 在 Shiny 中设置一个绘图缩放以匹配另一个绘图缩放

    我正在尝试使用情节重排获取一个图的 x 轴缩放限制 并将它们应用到 Shiny 中的另一个图 到目前为止 我可以从 plot1 x轴限制 获取相关的plotly relayout数据 将其转换 从数字到日期 并在绘制 plot2 之前将其提
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是
  • 用于清除工作空间和转储存储的 R 全局函数

    我希望创建一个全局函数来清除我的工作区并转储我的内存 我将我的函数称为 cleaner 并希望它执行以下代码 remove list ls gc 我尝试在全局环境中创建该函数 但是当我运行它时 控制台仅打印该函数的文本 在我要获取的函数文件
  • 将值替换为其各自列的名称

    我有一个数据框 Code 401k CVS 101A true 231N true FD54 true 99JB 85F4 true 我试图用相应的列名称 例如 401k 替换 true 字符值 这是我想要的输出 Code 401k CVS
  • 在函数内部调用 clusterApply 时,性能会下降

    我遇到了一个奇怪的问题clusterApply 我已经能够尽可能地隔离它 如下所示 首先 我从全局环境运行以下代码 require parallel cl lt makeCluster rep localhost 20 SOCK xl lt
  • ggplot 中的错误问题:“grid.Call(”L_textBounds“, as.graphicsAnnot(x$label), x$x, x$y, … 中的错误”[重复]

    这个问题在这里已经有答案了 我试图在 ggplot 中制作一个条形图 其中我通过强制其中一些标签为长度为零的字符串 即 来指定要显示的标签 但是 我收到错误 Error in grid Call L textBounds as graphi
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • glmnet 未从 cv.glmnet 收敛 lambda.min

    我跑了20倍cv glmnet套索模型以获得 lambda 的 最佳 值 但是 当我尝试重现结果时glmnet 我收到一个错误 内容如下 Warning messages 1 from glmnet Fortran code error c
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • R:表格格式

    我有一个包含以下列的 Excel 文件 Column1 Column2 Column3 ab bb 0 5 ab bc 0 1 ab cd 0 7 ab dd 0 8 ac bb 0 2 ac bg 0 8 ac ee 0 8 ac dd
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • ggplot2、R 中的单条形条形图

    我有以下数据和代码 gt ddf var1 var2 1 aa 73 2 bb 18 3 cc 9 gt gt dput ddf structure list var1 c aa bb cc var2 c 73L 18L 9L Names
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY

随机推荐