求一个变量的平均值,取决于另一个变量,该变量由第三个分组
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)]
这里是业余爱好者。我有一个数据集,我想在其中找到白天和夜间每个观察到的行为的平均值(小时)。以下示例。
期间 | 行为 | 小时 |
---|---|---|
天 | 步行 | 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)]