Частоты и один переменный фактор частоты для столбцов в R - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь отформатировать свои данные в R, чтобы затем использовать их правильно для различных общих линейных моделей.

Данные таковы:

> str(data)
'data.frame':   1978 obs. of  7 variables:
 $ country                : Factor w/ 22 levels "AT","BE","CH",..: 8 8 8 8 8 8 8 8 8 8 ...
 $ age                    : num  65 77 36 28 23 15 75 20 44 73 ...
 $ gender                 : Factor w/ 2 levels "male","female": 2 1 1 1 2 2 1 2 2 1 ...
 $ education_level        : Factor w/ 6 levels "less_than_lower_sec",..: 5 1 3 5 5 2 1 3 3 5 ...
 $ good_citizen_importance: Factor w/ 11 levels "00","01","02",..: 11 9 9 9 10 10 7 10 10 9 ...
 $ trade                  : Factor w/ 7 levels "none_apply","member",..: 2 4 4 2 2 4 4 4 2 4 ...
 $ relig                  : Factor w/ 7 levels "none_apply","member",..: 2 2 4 4 4 4 2 5 4 4 ...

Фрагмент из самих данных:

> head(data)
      country age gender     education_level good_citizen_importance   trade   relig
13711      FI  65 female            tertiary                      10  member  member
13712      FI  77   male less_than_lower_sec                      08 donated  member
13713      FI  36   male           upper_sec                      08 donated donated
13714      FI  28   male            tertiary                      08  member donated
13715      FI  23 female            tertiary                      09  member donated
13716      FI  15 female           lower_sec                      09 donated donated

И мне удалось сделать такой подсчет частоты, что означает, что я почти на месте. Но я бы хотел получить все факторы и связанные с ними значения переменной "good_citizen_importance" в столбцах.

> counts <- count(data, c("good_citizen_importance", "trade", "relig", "gender"))
> head(counts)
  good_citizen_importance   trade   relig gender freq
1                      00 donated  member   male    1
2                      00 donated donated   male    1
3                      01  member donated female    1
4                      01 donated donated   male    2
5                      01 donated donated female    1
6                      02  member  member female    1  

Вот как я хотел бы получить данные:

> head(counts)
    trade   relig   gender "00" "01" "02" ...
1   donated member  male     1    5    7   ...
2   donated donated male     12   2    3   ...
3   member  donated female   11   3    1   ...
4   donated donated male     25   1    4   ...
5   donated donated female   12   1    1   ...
6   member  member  female   11   1    1   ...

Так что я хотел бы иметь частоту фактора для всех факторов для одной переменной с комбинациями для других переменных. Другими словами, столбец частоты для всех 11 факторов переменной "good_citizen_importance".

Я уверен, что это не очень сложная проблема, но я боролся с этим уже несколько часов, и я думаю, что уже исчерпал свои навыки R и Google.

1 Ответ

0 голосов
/ 01 мая 2018

Это может быть достигнуто путем изменения формы данных. В базе R можно использовать функцию reshape, но синтаксис неудобен (я использовал ее регулярно, и мне приходилось искать синтаксис КАЖДЫЙ раз). Лучшее решение - spread в пакете tidyverse (в частности, в пакете tidyr:

library(tidyr) # or library(tidyverse)
counts_wide <- counts %>% 
  spread(good_citizen_importance, freq, fill = 0)

Если вы не знакомы с оператором канала (%>%), он принимает выходные данные предыдущей функции и устанавливает его в качестве первого аргумента следующей функции. Он используется для облегчения чтения кода путем удаления большого количества вложенных функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...