【问题标题】:How do I find the average for every minute of measurement for a certain group of chr rows?如何找到某组 chr 行每分钟测量的平均值?
【发布时间】:2021-11-10 06:44:51
【问题描述】:

一段时间以来,我一直在使用多个传感器进行一些测量。我现在需要每分钟找到所有 10 个传感器的平均值和标准偏差,因此我最终会得到一个包含以下列的数据框:时间、平均值和标准。但是,由于我接收数据的方式而出现了我的问题。首先,传感器不会在完全相同的时间进行测量,而是大约每分钟一次。这使得很难确定我需要平均值的确切时间戳。此外,由于传感器测量多个变量,传感器的 ID 在一列中给出,因此不能只取所有列的平均值,因为这些列表示不同的变量而不是不同的传感器。见下图。

有什么办法可以解决这个问题吗?换句话说,我需要一个均值(和标准)函数,我可以告诉它 1)哪个变量表示(例如 T),2)哪个实体名称表示跨(例如 ANG5-00902 和 ANG5-00903)和 3)为每个 HH:MM 做一次

谢谢!

【问题讨论】:

  • 您能否通过dput() 提供您的数据框样本。它让每个人的事情变得更轻松。
  • @Shibaprasadb 谢谢你的提示!正如您可能已经猜到的那样,我在 R 和堆栈溢出方面都是新手,因此我对您的意思有点困惑。你能详细说明一下吗?为了以某种方式可视化我的数据,我需要在 R 中输入 dput(df) 吗?我已经尝试过了,但它给了我一个错误。
  • @Sorensen 您共享数据(图像)的方式意味着我们无法复制您的问题,因为我们无法将图像粘贴到您的控制台中。如果您在 R 会话中输入 dput(name_of_your_data)将所有输出直接粘贴到您的问题中,这要容易得多,这样我们就可以复制您的数据。
  • @user438383 啊,这很有道理。谢谢你的澄清。但是,当我将其粘贴到问题中时,它只是一行中的很多数字。我该如何插入它,以便读者能够理解它?
  • @Sorensen 很好 - 很多连续的数字就是它的样子 - 它可以直接粘贴到我们的控制台中,它会准确地复制您的数据。

标签: r datetime std mean


【解决方案1】:

如果你想把它放在一个函数中,你可以执行以下操作:

library(dplyr)

meanstd <- function(df, filter, var) {
  df %>%
    group_by(format(as.POSIXct(Timestamp), format = "%H:%M"), Filter.x) %>%
    filter(Entity.Name %in% filter) %>%
    summarize(Mean = mean(get(var)),
              Std = sd(get(var))) %>%
    ungroup()
}

meanstd(X20210913NewAirNode, c("ANG5-00902", "ANG5-00903"), "T")

【讨论】:

  • 非常感谢您的快速回复。当我使用你的代码时,R返回: UseMethod("group_by") 中的错误:没有适用于 'group_by' 的方法应用于类“函数”的对象我不太确定该怎么做。你能帮帮我吗?
  • 请尝试使用dplyr::group_by。我认为您正在使用另一个包中的类似功能
  • 喜欢这个? library(dplyr) meanstd &lt;- function(X20210913NewAirNode, filter, var) { X20210913NewAirNode %&gt;% dplyr::group_by(format(as.POSIXct(Timestamp), format = "%H:%M"), Filter.x) %&gt;% filter(Entity.Name %in% filter) %&gt;% summarize(Mean = mean(get(var)), Std = sd(get(var))) %&gt;% ungroup() } meanstd(df, c("ANG5-00902", "ANG5-00903"), "T") 它给了我和以前一样的警告。
  • 我看到你改变了部分功能。无需将列名放在function() 中。如果你想打电话给桌子X20210913NewAirNode,你可以在最后的meanstd() 电话中做到这一点。我也会在我的原始答案中添加这一点
  • 很抱歉给您带来了麻烦。我是 R 的新手,以前没有使用过函数。我想我需要插入X20210913NewAirNode,因为这是我的数据框的名称。当我替换它以使我的代码与您的代码完全相似时,它仍然给我同样的错误。
猜你喜欢
  • 2023-03-22
  • 2021-01-31
  • 2021-03-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
相关资源
最近更新 更多