【发布时间】:2021-02-22 20:04:27
【问题描述】:
我有以下数据框:
library(tidyverse)
library(tibble)
data_frame <-
tribble(
~id, ~date, ~boolean_value,
"1", as.Date("2020-01-01"), TRUE,
"2", as.Date("2020-01-02"), TRUE,
"2", as.Date("2020-01-02"), TRUE,
"3", as.Date("2020-01-02"), TRUE,
"3", as.Date("2020-01-03"), FALSE
)
我希望能够按date 列进行分组,并按唯一ID 的数量以及与id 的每个唯一出现对应的布尔值的总和进行汇总。但是,当我运行以下代码时,它会给出与每个 date 对应的 boolean_value 的总和。
data_frame %>%
group_by(date) %>%
summarise(
total_ids = n_distinct(id),
total_true_values = sum(boolean_value)
)
#> `summarise()` ungrouping output (override with `.groups` argument)
#> # A tibble: 3 x 3
#> date total_ids total_true_values
#> <date> <int> <int>
#> 1 2020-01-01 1 1
#> 2 2020-01-02 1 3
#> 3 2020-01-03 1 0
相反,我想知道TRUE 在该日期每个唯一出现的id 值的数量。我期待以下结果:
#> # A tibble: 3 x 3
#> date total_ids total_true_values
#> <date> <int> <int>
#> 1 2020-01-01 1 1
#> 2 2020-01-02 2 2
#> 3 2020-01-03 1 0
如何使用 dplyr/tidyverse 实现这一目标?谢谢!
【问题讨论】: