Я пытаюсь сохранить уровни факторов после использования суммирования в цикле.
Я копирую свою проблему, используя фиктивный набор данных.
df = data.frame(a=rep(1:3,4), b=rep(1:2,6),c=rep(1:2,6),d=rep(1:2,6))
df$b = factor(df$b, levels=1:3)
#the group are for the loop. Since it's just an example have only 1 value
outer_group <- c("a")
inner_group <- c("b")
Мой желаемый результат достигается с помощью этого кода ниже. Однако, используя этот подход, мне нужно вручную изменить столбец complete()
в случае, если у меня есть несколько значений в цикле
for (o in outer_group){
for(i in inner_group){
df %>%
group_by_at(i) %>%
summarise(count_a=length(!!o)) %>%
complete(b) -> a
}
}
По этой причине я попытался изменить его на complete(!!i)
, например
for (o in outer_group){
for(i in inner_group){
df %>%
group_by_at(i) %>%
summarise(count_a=length(!!o)) %>%
complete(!!i) -> a
}
}
К сожалению, это не работает
Error: `by` can't contain join column `"b"` which is missing from RHS
Любая помощь приветствуется
Желаемый вывод:
# A tibble: 3 x 2
b count_a
<fct> <int>
1 1 1
2 2 1
3 3 NA