r - 根据 data.table (R) 列中的更改值对组进行编号
问题描述
我想用 data.table 做一些非常基本的事情,但我不知道怎么做!
我有这个数据:
test <- data.table(exo = c(1,1,1,1,1,1,1), number = c(1,2,3,4,5,6,7), remark = c("OK","OK","KO","KO","OK","OK","OK"))
exo number remark
1: 1 1 OK
2: 1 2 OK
3: 1 3 KO
4: 1 4 KO
5: 1 5 OK
6: 1 6 OK
7: 1 7 OK
8: 1 8 KO
而且我想对组进行编号(非常简单的形式是test[ , indic_num := .GRP, by = .(exo, remark)]
),但是如果我遇到备注更改,我想在 indic_num 中考虑:它是一个新组。
因此,所需的输出:
exo number remark indic_num
1: 1 1 OK 1
2: 1 2 OK 1
3: 1 3 KO 2
4: 1 4 KO 2
5: 1 5 OK 3
6: 1 6 OK 3
7: 1 7 OK 3
8: 1 8 KO 4
有人可以帮助我吗?
解决方案
我们可以使用rleid
forremark
所以每次更改都被视为一个新组。
library(data.table)
test[ , indic_num := .GRP, by = .(exo, rleid(remark))]
test
# exo number remark indic_num
#1: 1 1 OK 1
#2: 1 2 OK 1
#3: 1 3 KO 2
#4: 1 4 KO 2
#5: 1 5 OK 3
#6: 1 6 OK 3
#7: 1 7 OK 3
推荐阅读
- apache-kafka - 通过 Kafka 压缩主题遵守 GDPR
- c# - VS/Selenium - 对象引用未设置为具有空驱动程序的对象实例
- cs50 - CS50 pset3 潮人 print_winner
- spring - Spring Integration JPA Gateway:对空结果采取行动
- javascript - 另一个“未捕获的语法错误:意外的标识符”
- ios - traitCollectionDidChange 仅在后台被调用多次
- c++ - 在将 unique_ptr 移动到同一对象的基类构造后,使用指向对象的原始指针初始化字段
- linux - Linux 上 Wordpress 文件的权限
- html - 与窗口大小相同的图像元素:关闭
- javascript - 如何在 Material UI 中为 Textfield 类型日期设置“min”属性?