我与dplyr
有点挣扎,因为我想在一个人身上做两件事并想知道是否有可能。
我想计算值的平均值,同时计算另一列中具有特定值的值的平均值。
library(dplyr)
set.seed(1234)
df <- data.frame(id=rep(1:10, each=14),
tp=letters[1:14],
value_type=sample(LETTERS[1:3], 140, replace=TRUE),
values=runif(140))
df %>%
group_by(id, tp) %>%
summarise(
all_mean=mean(values),
A_mean=mean(values), # Only the values with value_type A
value_count=sum(value_type == 'A')
)
因此,A_mean
列应计算values
的平均值value_count == 'A'
。
我通常会做两个单独的命令并稍后合并结果,但我想有一个更方便的方法,我只是不明白。
提前致谢。
答案 0 :(得分:14)
我们可以尝试
df %>%
group_by(id, tp) %>%
summarise(all_mean = mean(values),
A_mean = mean(values[value_type=="A"]),
value_count=sum(value_type == 'A'))
答案 1 :(得分:2)
您可以通过两个摘要步骤来完成此操作:
df %>%
group_by(id, tp, value_type) %>%
summarise(A_mean = mean(values)) %>%
summarise(all_mean = mean(A_mean),
A_mean = sum(A_mean * (value_type == "A")),
value_count = sum(value_type == "A"))
第一个摘要计算每value_type
的均值,第二个“总和”仅计算value_type == "A"
的平均值
答案 2 :(得分:0)
您也可以尝试以下功能:
?summarise_if
(函数族为summarise_all
)