【发布时间】:2018-08-17 08:51:23
【问题描述】:
我感觉这已经被问了好几次了,但我无法让它运行在我的案例中。不知道为什么。
我 group_by 我的数据框并根据值计算 mean。此外,我标记了一个特定的行,我想计算我新计算的mean 与我突出显示的子集行的值的比率。
library(dplyr)
df <- data.frame(int=c(5:1,4:1),
highlight=c(T,F,F,F,F,F,T,F,F),
exp=c('a','a','a','a','a','b','b','b','b'))
df %>%
group_by(exp) %>%
summarise(mean=mean(int),
l1=nrow(.),
ratio_mean=.[.$highlight, 'int']/mean)
但由于某种原因,. 不是group_by 的子集,而是完整的输入。我在这里遗漏了什么吗?
我的预期输出是
exp mean ratio_mean
<fct> <dbl> <dbl>
1 a 3 1.67
2 b 2.5 1.2
【问题讨论】:
-
使用
n()计算子组中的行数。.指的是管道输入,即整个数据集 -
您可以使用
do():在其中,.将引用子集数据框。参见例如stackoverflow.com/questions/48182815/… -
那么我怎样才能访问子集而不是输入呢?还是我需要按
highlight分组并用. %>% group_by(exp) %>% summarise(mean=mean(int))计算平均值? -
你可以这样做:
ratio_mean = int[highlight]/mean -
Ahhhhhh,不知怎的,我还没有看到这个! :-)