我不知道如何计算R中某列子集的平均值。我的特定问题是计算“年龄”在40岁以上和40岁以下的“支出”。我已经尝试过
mean(expenditures[["age">=40]])
获得成功,但是
mean(expenditures[["age"<40]])
不成功。
因此,我被这个问题困扰。对于这个看似简单的问题,我将不胜感激。
答案 0 :(得分:2)
您可以通过将分组列group_by()更改为该列并使用summarise()来计算均值来实现以下目的:
library(dplyr)
data("mtcars")
mtcars %>%
group_by(group = ifelse(hp > 100, "> 100", "<= 100")) %>%
summarise(mean = mean(hp))
给予:
# A tibble: 2 x 2
group mean
<chr> <dbl>
1 <= 100 76.3
2 > 100 174.
注意:感谢蒂诺的提示!
答案 1 :(得分:1)
如果您不想使用其他软件包:
# some sample data:
set.seed(123)
df <- data.frame(age = sample(x = 20:50, size = 100, replace = TRUE),
expenditures = runif(n = 100, min = 100, max = 1000))
aggregate(
formula = expenditures ~ age >= 40,
data = df,
FUN = mean
)
要添加到Paul的解决方案中,您还可以在group_by
内创建组:
library(dplyr)
# using dplyr:
df %>%
group_by(age >= 40) %>%
summarise_at(.vars = vars(expenditures), mean)