Я знаю, что существует так много вопросов о списках данных, но я не могу найти решение этой простой проблемы. Допустим, у меня есть:
library(tidyverse)
library(janitor)
df <- data.frame( group = c(rep("A",3), rep("B", 6)),
test_value = c(0,1,2, 0,1,2,3,4,5))
df_list <- df %>%
split(.$group) %>%
map(~tabyl(.x$test_value))
df_list
# $A
# .x$test_value n percent
# 0 1 0.3333333
# 1 1 0.3333333
# 2 1 0.3333333
# $B
# .x$test_value n percent
# 0 1 0.1666667
# 1 1 0.1666667
# 2 1 0.1666667
# 3 1 0.1666667
# 4 1 0.1666667
# 5 1 0.1666667
Все, что я хочу сделать, - это преобразовать его в этот именованный кадр данных следующего содержания:
A_test_value A_n A_percent B_test_value B_n B_percent
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0 1 0.333 0 1 0.167
2 1 1 0.333 1 1 0.167
3 2 1 0.333 2 1 0.167
4 NA NA NA 3 1 0.167
5 NA NA NA 4 1 0.167
6 NA NA NA 5 1 0.167
Я видел это, но оно немного отличается ( Преобразование вложенного списка (неравной длины) во фрейм данных )
У кого-нибудь есть быстрое решение (возможно, типа dplyr
), пожалуйста?