我想计算重复测量的组中每组独立观察的数量。
这里有一些玩具数据
library(dplyr)
df <- bind_rows(mtcars, mtcars, mtcars) %>%
mutate(id=rep(row.names(mtcars),3))
在此数据中,
df %>% group_by(cyl, id) %>% count()
显示
# A tibble: 32 x 3
# Groups: cyl, id [32]
cyl id n
<dbl> <chr> <int>
1 4 Datsun 710 3
2 4 Fiat 128 3
3 4 Fiat X1-9 3
4 4 Honda Civic 3
5 4 Lotus Europa 3
6 4 Merc 230 3
7 4 Merc 240D 3
8 4 Porsche 914-2 3
9 4 Toyota Corolla 3
10 4 Toyota Corona 3
# … with 22 more rows
这是每个人(又称每辆车)的观测次数。要获得每个组的独立观察数(每个cyl
有多少辆车),我可以这样做。
df %>% group_by(cyl,id) %>% count() %>% ungroup() %>% group_by(cyl) %>% count()
# A tibble: 3 x 2
# Groups: cyl [3]
cyl n
<dbl> <int>
1 4 11
2 6 7
3 8 14
给出正确的结果(选中mtcars %>% group_by(cyl) %>% count()
)
group_by(...) %>% count() %>% ungroup() %>% group_by() %>% count()
对我来说并不直观。
我想念什么?有更好的方法吗?
相关问题,是否有一种方法可以将计数传递到原始df中,或者您需要一个新对象和left_join(...)
?
答案 0 :(得分:1)
您需要n_distinct()
-
df %>% group_by(cyl) %>% summarize(n = n_distinct(id))
# A tibble: 3 x 2
cyl n
<dbl> <int>
1 4 11
2 6 7
3 8 14
对于您的相关问题,您可以-
df %>%
group_by(cyl) %>%
mutate(n = n_distinct(id)) %>%
ungroup()