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

R 求一个变量的平均值,取决于另一个变量,该变量由第三个变量分组,r,grouping,mean,R,Grouping,Mean,我是业余爱好者。我有一个数据集,我想找到白天和夜间每个观察行为的平均值(小时)。下面是示例 时期 行为 小时 白天 行走 3.5 白天 常设的 2. 夜 放牧 5. 夜 说谎 4.5 您可以使用以下解决方案: library(dplyr) df %>% group_by(Period, Behaviour) %>% summarise(avg = mean(Hours, na.rm = TRUE)) # A tibble: 4 x 3 # Groups: Period

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

时期 行为 小时 白天 行走 3.5 白天 常设的 2. 夜 放牧 5. 夜 说谎 4.5
您可以使用以下解决方案:

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

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

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

或者我们可以使用
data.table

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

或者我们可以使用
data.table

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

太好了!非常感谢你帮助我,我很高兴。代码的唯一问题是,您应该将第二个分组变量
df$Period
包含在
aggregate
函数的
by
参数的列表中。事实上你完全正确,我很接近。非常新的R,但享受到目前为止!再次感谢您的快速回复。非常感谢。只要充分阅读文档,这是你可以学到所有你需要的。太棒了!非常感谢你帮助我,我很高兴。代码的唯一问题是,您应该将第二个分组变量
df$Period
包含在
aggregate
函数的
by
参数的列表中。事实上你完全正确,我很接近。非常新的R,但享受到目前为止!再次感谢您的快速回复。非常感谢。只需充分阅读文档,您就可以在这里学到您所需要的一切。