Создать сводную таблицу для отображения разброса каждой группы во фрейме данных - PullRequest
0 голосов
/ 06 декабря 2018

Итак, вот данные:

Year   State   Grade   Yes   
2000   AZ      A       1
2000   AZ      A       0
2000   AZ      A       1
2000   AZ      B       1
2000   AZ      B       1
2000   CA      A       1
2000   CA      A       0
2000   CA      B       0
2000   NY      A       1
2000   NY      A       1
2001   NY      B       1

То, что я пытаюсь сделать, - это создать таблицу, которая показывает сумму 1 в столбце Да в виде дроби каждой группы.В итоговой таблице будет показано значение для каждой группы на основе года, состояния и класса.Это будет выглядеть следующим образом:

Year   Grade   AZ     CA   NY
2000   A       0.667  0.5  1
2000   B       1      0    1
2001   A       0      0    0
2001   B       0      0    1

Данные содержат больше значений, включая несколько значений для года, класса и состояния, поэтому таблица будет намного больше, но по существу она будет возвращать пропорцию для каждой группы на основе этихтри переменные.

Мой код выглядит так:

library(tidyverse)
data %>%
    group_by(Year, State, Grade) %>%
    summarise(x = Yes / count(Yes)) %>%
    spread(State, x)

1 Ответ

0 голосов
/ 06 декабря 2018

вы были близки ... Вторая строка кода является необязательной, чтобы получить все комбинации ... просто получите sum из Yes и разделите на количество строк в группе (= n()).Затем распространите, и если вы хотите, чтобы NA = 0, не забудьте fill = 0 в конце.

df %>% 
  complete( Year, nesting( State, Grade ), fill = list( Yes = 0 ) ) %>%
  group_by( Year, State, Grade ) %>%
  summarise( x = sum( Yes ) / n() ) %>%
  spread( State, x, fill = 0 )

# # A tibble: 4 x 5
# # Groups:   Year [2]
#    Year Grade    AZ    CA    NY
#   <int> <chr> <dbl> <dbl> <dbl>
# 1  2000 A     0.667   0.5     1
# 2  2000 B     1       0       0
# 3  2001 A     0       0       0
# 4  2001 B     0       0       1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...