首页 > 解决方案 > 从 CrossTable 中选择名称

问题描述

我有 Crosstable,其中有一个计数向量和匹配的因子,如下所示。

我想绘制一个因子 "0-7" "11-13.5" "13.5+" "7-9" ... 的图,但是按照特定的顺序,比如首先是 0-7,然后是 7-9, 11-13.5等...

这怎么能快速完成?

> str(数据2)
4人名单
 $ t : int [1, 1:6] 3342 6954 6002 5150 4868 2776
  ..- attr(*, "dimnames")=2 个列表
  .. ..$ : 空
  .. ..$ : 字符 [1:6] "0-7" "11-13.5" "13.5+" "7-9" ...

标签: r

解决方案


考虑使用包中的Recoding插件questionr

您可以使用以下功能重新标记level

## Reordering df1$bands
df1$bands <- factor(df1$bands, levels=c("0-7", "7-9", "11-13.5", "13.5+"))

构建标签:

df1 <- df %>% mutate(bands = case_when(value <= 7 ~ "0-7",
                                value <= 9 ~ "7-9",
                                value <= 13.5 ~ "11-13.5",
                                value > 13.5 ~ "13.5+" )) 

这是排序的数据:

df1 %>% count(bands)

# A tibble: 4 x 2
  bands       n
  <fct>   <int>
1 0-7         7
2 7-9         2
3 11-13.5     5
4 13.5+       7

样本数据:

df <- tibble::tribble(
  ~t, ~value,
   1,    0.5,
   3,    1.5,
   5,    2.5,
   7,    3.5,
   9,    4.5,
  11,    5.5,
  13,    6.5,
  15,    7.5,
  17,    8.5,
  19,    9.5,
  21,   10.5,
  23,   11.5,
  25,   12.5,
  27,   13.5,
  29,   14.5,
  31,   15.5,
  33,   16.5,
  35,   17.5,
  37,   18.5,
  39,   19.5,
  41,   20.5
  )

推荐阅读