根据另一列中的其他ID计算R中一列的平均值

Calculating Average of a Column in R per other IDs in another column

我希望能够计算每只乌龟每天(或每个周期)的平均值 m.HR。我试过使用 summarize = 来计算它,但我只知道如何使用它来计算一个整体的平均值。

这是我的代码:

structure(list(Date = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), .Label = c("2015-05-23", "2015-05-24", "2015-05-25", 
"2015-05-26", "2015-05-27", "2015-05-28", "2015-05-29", "2015-05-30", 
"2015-05-31", "2015-06-01", "2015-06-02", "2015-06-03", "2015-06-04", 
"2015-06-05", "2015-06-06", "2015-06-07", "2015-06-08", "2015-06-09", 
"2015-06-10", "2015-06-16", "2015-06-17", "2015-06-18", "2015-06-19", 
"2015-06-20", "2015-06-21", "2015-06-22", "2015-06-23", "2015-06-24", 
"2015-06-25", "2015-06-26", "2015-06-27", "2015-07-02", "2015-07-03", 
"2015-07-04", "2015-07-05", "2015-07-06", "2015-07-07", "2015-07-08", 
"2015-07-09", "2015-07-10", "2015-07-11", "2015-07-12", "2015-07-16", 
"2015-07-17", "2015-07-18", "2015-07-19", "2015-07-20", "2015-07-21", 
"2015-07-22", "2015-07-23", "2015-07-24", "2015-07-25", "2015-07-26", 
"2015-07-29", "2015-07-30", "2015-07-31", "2015-08-01", "2015-08-02", 
"2015-08-03", "2015-08-04", "2015-08-05", "2015-08-06", "2015-08-07", 
"2015-08-08", "2015-08-09", "2015-09-18", "2015-09-19", "2015-09-20", 
"2015-09-21", "2015-09-22", "2015-09-23", "2015-09-24", "2015-09-25", 
"2015-09-26", "2015-09-27", "2015-09-28", "2015-09-29", "2015-09-30"
), class = "factor"), Turtle = structure(c(3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L), .Label = c("R3L1", "R3L11", "R3L12", "R3L2", 
"R3L4", "R3L8", "R3L9", "R4L8", "R8L1", "R8L4", "R8NAT123"), class = "factor"), 
    m.HR = c(7.56457, 6.66759, 17.51107, 9.72277, 19.44553, 13.07674, 
    28.115, 14.99467, 17.16947, 40.40479), Cycle = c(1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), row.names = c(NA, 10L), class = "data.frame")

最后,应该创建一个新的数据框来显示周期、日期、海龟和每天的平均值 m.HR。

如有任何问题,请告诉我,提前谢谢!!

我想通了!

df <- data %>%
  group_by(Turtle, Date) %>%
  summarize(Mean.HR = mean(m.HR))

您可以使用包 dplyr

df <- df %>%
  group_by(Date, Turtle) %>%
  summarise(mean_m.HR = mean(m.HR))

这是一个无需额外软件包即可工作的选项:

aggregate(m.HR ~ Turtle + Date + Cycle, YOUR_DATA, mean)

Returns:

  Turtle       Date Cycle     m.HR
1  R3L12 2015-05-23     1 17.46722

选项data.table

library(data.table)
setDT(df)[, .(mean_m.HR = mean(m.HR, na.rm = TRUE)), .(Date, Turtle)]