计算列子集的平均值

时间:2018-08-21 04:38:41

标签: r subset mean

我不知道如何计算R中某列子集的平均值。我的特定问题是计算“年龄”在40岁以上和40岁以下的“支出”。我已经尝试过

mean(expenditures[["age">=40]]) 

获得成功,但是

mean(expenditures[["age"<40]]) 

不成功。

因此,我被这个问题困扰。对于这个看似简单的问题,我将不胜感激。

2 个答案:

答案 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)