Мне нужна помощь.
Допустим, у меня есть это:
# A tibble: 10 x 3
a b c
<chr> <dbl> <lgl>
1 a 1 TRUE
2 a 1 TRUE
3 a 1 TRUE
4 a 2 TRUE
5 a 2 TRUE
6 a 2 FALSE
7 a 2 FALSE
8 a 3 FALSE
9 a 3 FALSE
10 a 3 FALSE
structure(list(a = c("a", "a", "a", "a", "a", "a", "a", "a",
"a", "a"), b = c(1, 1, 1, 2, 2, 2, 2, 3, 3, 3), c = c(TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE)), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу group_by
столбец b
и вычислить в каждой группе относительную частоту T == TRUE
в столбце c
, чтобы создать столбец d
.
Итак, я хочу этот вывод:
# A tibble: 10 x 4
a b c d
<chr> <dbl> <lgl> <dbl>
1 a 1 TRUE 1
2 a 1 TRUE 1
3 a 1 TRUE 1
4 a 2 TRUE 0.5
5 a 2 TRUE 0.5
6 a 2 FALSE 0.5
7 a 2 FALSE 0.5
8 a 3 FALSE 0
9 a 3 FALSE 0
10 a 3 FALSE 0
structure(list(a = c("a", "a", "a", "a", "a", "a", "a", "a",
"a", "a"), b = c(1, 1, 1, 2, 2, 2, 2, 3, 3, 3), c = c(TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE), d = c(1,
1, 1, 0.5, 0.5, 0.5, 0.5, 0, 0, 0)), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame"))
Предпочтительнее с dplyr
или tidyverse
.
Я пытался:
#1
t %>%
group_by(b) %>%
mutate(
d = nrow(c[c == T])/nrow()
)
#2
t %>%
group_by(b) %>%
mutate(
d = count(c[c == T])/count()
)
#3
t %>%
group_by(b) %>%
mutate(
d = nrow(any(c[c == T]))/nrow(any())
)
Никто не работал.
Похожие вопросы (но разные):
Как рассчитать относительную частоту по группам
R: относительная частота в r с коэффициентом
Любая помощь приветствуется.
Заранее спасибо.