如何为R中的数据帧中的人口统计信息创建计数表?

问题描述 投票:0回答:2

我想创建一个可以在R中格式化的表格,以按计数汇总人口统计数据。例如,我有一个数据框(下面的示例),其中包含有关性别,性行为和残疾的信息。我想要一个表来显示有多少人标识为男性,女性,异性恋,同性恋等。因此,基本上,我想要等效于table(df $ gender)函数,但在一个表中具有多个变量。理想情况下,可以对其进行格式化以使其美观,然后将其导出。

这里的代码创建可复制的数据框(尽管在我的真实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     

我该怎么做?

提前感谢!

r
2个回答
0
投票

您可以在每一列上调用table

sapply(fake.data, table)

#$gender

#female   male 
#     2      3 

#$sexuality

#     asexual     bisexual heterosexual   homosexual 
#           1            1            2            1 

#$disabled

# no yes 
#  3   2 

0
投票

取决于要对表具有的复杂程度,可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.