求一个变量的平均值,取决于另一个变量,该变量由第三个分组

Find mean of one variable, depending on another, which is grouped by a third

这里是业余爱好者。我有一个数据集,我想在其中找到白天和夜间每个观察到的行为的平均值(小时)。以下示例。

期间 行为 小时
步行 3.5
站立 2
晚上 放牧 5
晚上 说谎 4.5

理想情况下,我想获得白天和黑夜每种行为的平均值(小时)。我尝试使用;

aggregate(df$Hours, list(df$Behaviour), mean)

这给了我每个行为的整体平均值,我不知道如何进一步按时间段分组以获得白天和黑夜的分割。希望这是有道理的。

您可以使用以下解决方案:

library(dplyr)

df %>%
  group_by(Period, Behaviour) %>%
  summarise(avg = mean(Hours, na.rm = TRUE))

# A tibble: 4 x 3
# Groups:   Period [2]
  Period Behaviour   avg
  <chr>  <chr>     <dbl>
1 Day    Standing    2  
2 Day    Walking     3.5
3 Night  Grazing     5  
4 Night  Lying       4.5

或者这可能是基础 R:

aggregate(df$Hours, by = list(df$Period, df$Behaviour), FUN = mean)

  Group.1  Group.2   x
1   Night  Grazing 5.0
2   Night    Lying 4.5
3     Day Standing 2.0
4     Day  Walking 3.5

或者我们可以使用 data.table

library(data.table)
setDT(df)[, .(avg = mean(Hours, na.rm = TRUE)), .(Period, Behaviour)]