如何从数据框分类变量和频率列创建交叉表?

时间:2019-12-29 08:52:38

标签: r

我有一个数据框,其中包括性别(男性和女性),年龄(儿童和成人),生存(是和否)和频率。如何创建性别和年龄的交叉表?

sex     age    survive   freq
male    child   yes      4
male    adult   yes      0
female  child   yes      6
female  adult   yes      3
male    child   no       1
male    adult   no       0
female  child   no       2
female  adult   no       1

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找使用pivot_wider中的tidyr重塑数据的方法:

library(tidyr)
df %>% pivot_wider(., names_from = age, values_from = freq)

# A tibble: 4 x 4
  sex    survive child adult
  <fct>  <fct>   <int> <int>
1 male   yes         4     0
2 female yes         6     3
3 male   no          1     0
4 female no          2     1

library(tidyr)
df %>% pivot_wider(., names_from = c(age, survive), values_from = freq)

# A tibble: 2 x 5
  sex    child_yes adult_yes child_no adult_no
  <fct>      <int>     <int>    <int>    <int>
1 male           4         0        1        0
2 female         6         3        2        1

是您要找的东西吗?如果没有,您能提供预期的结果吗?

数据

df = structure(list(sex = structure(c(2L, 2L, 1L, 1L, 2L, 2L, 1L, 
1L), .Label = c("female", "male"), class = "factor"), age = structure(c(2L, 
1L, 2L, 1L, 2L, 1L, 2L, 1L), .Label = c("adult", "child"), class = "factor"), 
    survive = structure(c(2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L), .Label = c("no", 
    "yes"), class = "factor"), freq = c(4L, 0L, 6L, 3L, 1L, 0L, 
    2L, 1L)), class = "data.frame", row.names = c(NA, -8L))
相关问题