【问题标题】:How do I find the average of each data_point, within the data frame (df) in R?如何在 R 中的数据框 (df) 中找到每个 data_point 的平均值?
【发布时间】:2018-06-07 10:16:30
【问题描述】:

数据框(df):


数据点 |测量

一个 | 2

一个 | 4

b | 6

b | 8

c | 4

c | 10

【问题讨论】:

  • 你的问题对我来说没有意义。 “每个数据点的平均值”是多少?此外,您可以通过 R 中的 ?mean 或搜索 Google 轻松找到一列数据的平均值、中位数或其他统计数据(如果这是您想要的)。另请阅读提问说明。
  • @Elin 我知道我可以使用 mean 函数来求一列的均值,但我不想求整列的均值。我只想找到数据点a对应的均值,然后是数据点b对应的均值等等.....
  • 如果点 a 只有一个值,则平均值就是那个值。请在阅读如何提出问题、如何创建最小可行示例后编辑您的问题以解释您的意思。
  • 查找聚合或 dplyr::summary。
  • 还只是总结一下,您需要这样做,以便有人可以复制您的代码和数据并将其粘贴到他们的 R 实例中,您应该包含所需的结果。

标签: r dataframe average


【解决方案1】:

数据

Data_point <- c('a','a','b','b','c','c')
Measurement <- c(2,4,6,8,4,10)

df <- data.frame(Data_point=Data_point, Measurement=Measurement)

您可以使用meanwhich 来选择您想要的值。将其组合成一个函数可以得到你想要的结果。如前所述,可能已经有一个函数用于此(可能在tidyverse 的某个地方),但这仅用于基本 R。

average <- function(x) {
  mean(df$Measurement[which(df$Data_point == x)])
}

sapply(unique(df$Data_point), average)
#[1] 3 7 7

【讨论】:

  • 这只是一个代码答案,你需要解释你做了什么以及你为什么这样做。
  • @shique 谢谢!请您澄清一下在这种情况下“x”代表什么?
  • x 表示来自此代码中函数的输入,定义为 average。使用sapply,您可以多次调用该函数,并将unique(df$Data_point)的结果作为输入
【解决方案2】:

正如 Elin 所建议的,dplyr 可以做到这一点。使用时缺的数据:

library(dplyr)
df %>% group_by(Data_point) %>% summarise_all(mean)

【讨论】:

    【解决方案3】:

    base R 选项将是 aggregate

    aggregate(.~ Data_point, df1, mean)
    

    【讨论】:

      猜你喜欢
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2022-10-09
      • 2022-01-11
      • 2020-12-16
      • 2017-04-19
      相关资源
      最近更新 更多