我希望对数据框的每个因子计算均值,但仅在满足特定条件时。例如,我有这个数据框:
> df <- data.frame(name = rep(c("A", "B", "C"), 20),
variable1 = rep(c(1, 1, 1, 1, 1, NA), 10),
variable2 = rep(c(2, NA, 2, 2, 2, 2), 10),
variable3 = rep(c(NA, 3, 3, 3, 3, 3), 10))
> table(df$name, df$variable1)
1
A 20
B 20
C 10
> table(df$name, df$variable2)
2
A 20
B 10
C 20
> table(df$name, df$variable3)
3
A 10
B 20
C 20
我可以通过以下方式使用 dplyr
轻松地计算每个变量的平均值:
means <- df %>%
group_by(name) %>%
summarise_each(funs(mean(., na.rm = TRUE)))
> means
Source: local data frame [3 x 4]
name variable1 variable2 variable3
1 A 1 2 3
2 B 1 2 3
3 C 1 2 3
然而,我的要求是仅在有11个或更多的观测值时计算平均值,否则在相应单元格中放置NA
。换句话说,结果应该像这样:
name variable1 variable2 variable3
1 A 1 2 NA
2 B 1 NA 3
3 C NA 2 3
dplyr
的语法更直观吗? - David Arenburg