根据数据表(R)列中的更改值对组进行编号
我想用data.table做一些非常基本的事情,但我不知道怎么做 我有以下数据:根据数据表(R)列中的更改值对组进行编号,r,data.table,R,Data.table,我想用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 r
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
有人能帮我吗?我们可以使用
rleid
来表示备注
,因此每次更改都被视为一个新的组
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
我们可以将
rleid
用于备注
,因此每次更改都被视为一个新组
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
使用
dplyr
,我们可以使用cur\u group\u id
library(dplyr)
library(data.table)
test %>%
group_by(exo, grp = rleid(remark)) %>%
mutate(indic_num = cur_group_id()) %>%
ungroup %>%
select(-grp)
# A tibble: 7 x 4
# exo number remark indic_num
# <dbl> <dbl> <chr> <int>
#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
使用
dplyr
,我们可以使用cur\u group\u id
library(dplyr)
library(data.table)
test %>%
group_by(exo, grp = rleid(remark)) %>%
mutate(indic_num = cur_group_id()) %>%
ungroup %>%
select(-grp)
# A tibble: 7 x 4
# exo number remark indic_num
# <dbl> <dbl> <chr> <int>
#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