首页 > 解决方案 > R中的分组二进制数据

问题描述

我正在玩二进制数据。

我以下列方式在列中有测试数据:

       A   B   C   D   E   F   G   H   I   J   K   L   M   N
       -----------------------------------------------------
       1   1   1   1   1   1   1   1   1   0   0   0   0   0
       0   0   0   0   1   1   1   0   1   1   0   0   1   0

1表示系统已开启并0表示系统已关闭。

我有办法找出一种方法来总结这些系统的开/关转换之间的差距。

例如:

我以以下形式看到我的结果 ( table1)

    row-number   value      grp_num     num       Range
    ------------  -----     --------    ------    ------ 
    1              1           1          9         A-I
    1              0           2          5         J-N
    2              0           1          4         A-D
    2              1           2          3         E-G
    2              0           3          1         H-H
    2              1           4          2         I-J
    2              0           5          2         K-L
    2              1           6          1         M-M
    2              0           7          1         N-N

我使用的代码是这样的:

table1 <- test[,-c(1)] %>% 
  rownames_to_column() %>%
  gather(col,val,-rowname) %>%
  group_by(rowname) %>%
  mutate(grp_num = cumsum(val != lag(val, default = -99))) %>%
  group_by(rowname,val,grp_num) %>%
  dplyr::summarise(num = n(),
                   range = paste0(first(col), "-", last(col)))

我的问题是,如果我的数据有空白条目,我如何将它们排除在组的一部分之外。

A   B   C   D   E   F   G   H   I   J   K   L   M   N
-----------------------------------------------------
    1   1   1   1   1   1   1   1   0   0   0   0   0
                1   1   1   0   1   1   0   0   1   0

预期结果非常相似,但不包括空白值

         row-number   value      grp_num     num       Range
        ------------  -----     --------    ------    ------ 
        1              1           1          8         B-I
        1              0           2          5         J-N
        2              1           1          3         E-G
        2              0           2          1         H-H
        2              1           3          2         I-J
        2              0           4          2         K-L
        2              1           5          1         M-M
        2              0           6          1         N-N

标签: rdataframedplyrtidyversetidyr

解决方案


推荐阅读