У меня есть следующее dataframe
:
structure(list(trial = c("ES1-7", "ES1-7", "ES1-7", "ES14-25",
"ES14-25", "ES14-25", "ES26-38", "ES26-38", "ES26-38", "ES8-13",
"ES8-13", "ES8-13", "SA1-13", "SA1-13", "SA1-13", "SA14-25",
"SA14-25", "SA14-25"), marker = c("0", "1", "2", "0", "1", "2",
"0", "1", "2", "0", "1", "2", "0", "1", "2", "0", "1", "2"),
n = c(873L, 269L, 2114L, 2300L, 673L, 5959L, 3410L, 1200L,
7930L, 599L, 173L, 1538L, 2834L, 509L, 6953L, 3082L, 757L,
6875L), prop = c(0.268120393120393, 0.0826167076167076, 0.649262899262899,
0.257501119570085, 0.0753470667263771, 0.667151813703538,
0.271929824561404, 0.0956937799043062, 0.63237639553429,
0.259307359307359, 0.0748917748917749, 0.665800865800866,
0.275252525252525, 0.0494366744366744, 0.6753108003108, 0.287661004293448,
0.0706552174724659, 0.641683778234086)), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -18L), vars = "trial",
labels = structure(list(
trial = c("ES1-7", "ES14-25", "ES26-38", "ES8-13", "SA1-13",
"SA14-25")), row.names = c(NA, -6L), class = "data.frame", vars = "trial",
drop = TRUE), indices = list(
0:2, 3:5, 6:8, 9:11, 12:14, 15:17), drop = TRUE, group_sizes = c(3L,
3L, 3L, 3L, 3L, 3L), biggest_group_size = 3L)
Это выглядит так:
# A tibble: 6 x 4
# Groups: trial [2]
trial marker n prop
<chr> <chr> <int> <dbl>
1 ES1-7 0 873 0.268
2 ES1-7 1 269 0.0826
3 ES1-7 2 2114 0.649
4 ES14-25 0 2300 0.258
5 ES14-25 1 673 0.0753
6 ES14-25 2 5959 0.667
Я хочу group_by
за trial
и добавить половину prop
значение, когда marker
равно 1
другим строкам, когда marker
равно 0
или 2
.
Например, при группировании по ES1-7
у меня будет следующее prop
значение: 0,268+ (0,0826 / 2), когда marker
равно 0
.
Ожидаемый результат для групп ES1-7 и ES14-25 будет:
# A tibble: 6 x 4
# Groups: trial [2]
trial marker n prop
<chr> <chr> <int> <dbl>
1 ES1-7 0 873 0.268+(0.0826/2)
2 ES1-7 1 269 0.0826
3 ES1-7 2 2114 0.649+(0.0826/2)
4 ES14-25 0 2300 0.258+(0.0753/2)
5 ES14-25 1 673 0.0753
6 ES14-25 2 5959 0.667+(0.0753/2)