Как отфильтровать частоту по двум категориальным переменным в наборе данных? - PullRequest
0 голосов
/ 29 апреля 2019

Я заинтересован в выяснении частоты безработных, которые также являются афроамериканцами / чернокожими в моем наборе данных. У меня есть большой набор данных, который включает в себя переменные OCC (безработные отмечены как 0) и Race (AA / Black кодируется как 2).

Я пытался использовать функцию group (by) через tidyverse, но я думаю, что, возможно, я делаю это неправильно, потому что я получаю следующие сообщения об ошибках.

Это код:

RACE <- group_by(cps_data, OCC, RACE)
occupation <- summarise(RACE,
                   count = n(),
                   OCC = mean(OCC, na.rm = TRUE)
)


summarise(RACE, occupation = mean(OCC, na.rm = TRUE))

Объект оккупации, который я создал, выдает мне сообщение об ошибке:

Error in summarise_impl(.data, dots) : 
  Column `OCC` can't be modified because it's a grouping variable

Функция суммирования дает мне подсказку, которая не кажется очень полезной:

# A tibble: 1,374 x 3
# Groups:   OCC [?]
     OCC  RACE occupation
   <int> <int>      <dbl>
 1     0     1          0
 2     0     2          0
 3     0     3          0
 4     0     4          0
 5     0     5          0
 6     0     6          0
 7     0     7          0
 8     0     8          0
 9     0     9          0
10    10     1         10

Вот некоторые из моих данных - я пытался воспроизвести для вас, ребята, чтобы помочь вам помочь мне. Вы увидите, что выше я сделал еще один фрейм данных, включающий только OCC и RACE, так как это единственные релевантные факторы на данный момент.

dput(head(cps_data,4))
structure(list(YEAR = c(2015L, 2015L, 2015L, 2015L), DATANUM = c(1L, 
1L, 1L, 1L), SERIAL = c(1029644L, 1029644L, 1029705L, 1029708L
), CBSERIAL = c(403, 403, 1944, 1964), HHWT = c(194L, 194L, 142L, 
77L), STATEICP = c(14L, 14L, 14L, 14L), STATEFIP = c(42L, 42L, 
42L, 42L), CITY = c(5330L, 5330L, 5330L, 5330L), GQ = c(1L, 1L, 
1L, 1L), PERNUM = c(1L, 3L, 1L, 1L), PERWT = c(194L, 140L, 142L, 
78L), SEX = c(2L, 1L, 2L, 1L), AGE = c(37L, 35L, 60L, 41L), RACE = c(1L, 
1L, 2L, 2L), RACED = c(100L, 100L, 200L, 200L), OCC = c(800L, 
6260L, 0L, 350L), IND = c(7270L, 770L, 0L, 8190L), INCWAGE = c(75000L, 
25000L, 0L, 83000L)), row.names = c(NA, 4L), class = "data.frame")

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

1 Ответ

0 голосов
/ 29 апреля 2019

Если я вас правильно понял, вы были почти там.

df %>%
    group_by(OCC, RACE) %>%
    summarize(count = n())

# A tibble: 4 x 3
# Groups:   OCC [4]
    OCC  RACE count
  <int> <int> <int>
1     0     2     1
2   350     2     1
3   800     1     1
4  6260     1     1

Данные

library(tidyverse)
df <- structure(list(YEAR = c(2015L, 2015L, 2015L, 2015L), DATANUM = c(1L, 
    1L, 1L, 1L), SERIAL = c(1029644L, 1029644L, 1029705L, 1029708L
    ), CBSERIAL = c(403, 403, 1944, 1964), HHWT = c(194L, 194L, 142L, 
    77L), STATEICP = c(14L, 14L, 14L, 14L), STATEFIP = c(42L, 42L, 
    42L, 42L), CITY = c(5330L, 5330L, 5330L, 5330L), GQ = c(1L, 1L, 
    1L, 1L), PERNUM = c(1L, 3L, 1L, 1L), PERWT = c(194L, 140L, 142L, 
    78L), SEX = c(2L, 1L, 2L, 1L), AGE = c(37L, 35L, 60L, 41L), RACE = c(1L, 
    1L, 2L, 2L), RACED = c(100L, 100L, 200L, 200L), OCC = c(800L, 
    6260L, 0L, 350L), IND = c(7270L, 770L, 0L, 8190L), INCWAGE = c(75000L, 
    25000L, 0L, 83000L)), row.names = c(NA, 4L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...