r - 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
表示系统已关闭。
我有办法找出一种方法来总结这些系统的开/关转换之间的差距。
例如:
对于第一行,它在之后停止工作
I
对于第二行,它从
E
toG
开始工作,然后再次工作I
,M
但在其他时间关闭。
我以以下形式看到我的结果 ( 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
解决方案
推荐阅读
- git - Google Compute Engine VM,添加的负载均衡器现在不能 git pull
- python - 无法打开 Jupyter Notebook - Distutils 错误
- python - 将函数应用于多个变量
- c# - 使用 Automapper 映射属性返回 NotFoundException
- sql - 如何微调这个 SQL Server 查询?
- jquery - 将部分视图模式中的选定文本附加到父视图中的文本框 - .NET Core MVC
- sql - 情况下 min()
- c - 已声明原型的函数隐式声明
- php - 我正在尝试使用 postgres 和 php 插入多行
- firebase - FireStore Emulator 初始数据是否有源代码控制友好的工作流程?