Как я могу сделать таблицу подсчета для демографической информации c из фрейма данных в R? - PullRequest
0 голосов
/ 28 апреля 2020

Я хочу создать таблицу, которая может быть отформатирована в R, суммируя демографические данные c по счетчикам. Например, у меня есть фрейм данных (пример ниже), в котором есть информация о поле, сексуальности и инвалидности. Я хочу таблицу, которая показывает, сколько людей идентифицируют себя как мужчин, женщин, гетеросексуалов, гомосексуалистов и т. Д. c. Так что в основном я хочу эквивалент функции таблицы (df $ пол), но с несколькими переменными в одной таблице. И в идеале иметь возможность отформатировать его так, чтобы он выглядел красиво и затем экспортировался.

Код здесь для создания воспроизводимого фрейма данных (хотя в моем реальном df у меня есть дополнительные столбцы, которые я не хочу включать в таблицу ):

gender <- c('female','male','male','female','male')
sexuality <- c('heterosexual','bisexual','heterosexual','asexual','homosexual')
disabled <- c('no','no','yes','no','yes')
fake.data <- data.frame(gender,sexuality,disabled)

Мне нужна таблица, которая выглядит следующим образом:

**Gender**       
Male: 3      
Female: 2

**Sexuality** 
Heterosexual: 2
etc etc     

Как мне это сделать, пожалуйста?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

В зависимости от уровня сложности, который вы хотите иметь для своих таблиц, вы можете использовать aggregate:

aggregate(
  x = fake.data$sexuality[fake.data$disabled=="no"],
  by = list(fake.data$gender[fake.data$disabled=="no"]),
  function(x) table(x))
#  Group.1 x.asexual x.bisexual x.heterosexual x.homosexual
#1  female         1          0              1            0
#2    male         0          1              0            0

или:

aggregate(
  x = fake.data$sexuality[fake.data$disabled=="yes"],
  by = list(fake.data$gender[fake.data$disabled=="yes"]),
  function(x) table(x)) 
#  Group.1 x.asexual x.bisexual x.heterosexual x.homosexual
#1    male         0          0              1            1
0 голосов
/ 28 апреля 2020

Вы можете позвонить table в каждом столбце:

sapply(fake.data, table)

#$gender

#female   male 
#     2      3 

#$sexuality

#     asexual     bisexual heterosexual   homosexual 
#           1            1            2            1 

#$disabled

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