Используя cumsum
, мы можем подсчитать количество раз Feature = "g201a"
и replace
значений, которые не являются от "g201a"
до NA
.
df$Bucket <- with(df, replace(paste0('bucket_', cumsum(Feature == "g201a")),
Feature != "g201a", NA))
# Tree Node Feature Bucket
#1 0 0 g201a bucket_1
#2 1 1 re20s <NA>
#3 2 0 g201a bucket_2
#4 3 0 g201a bucket_3
Это можно сделать и в dplyr
трубе
library(dplyr)
df %>%
mutate(Bucket = replace(paste0('bucket_', cumsum(Feature == "g201a")),
Feature != "g201a", NA))
данные
df <- structure(list(Tree = 0:3, Node = c(0L, 1L, 0L, 0L), Feature = structure(c(1L,
2L, 1L, 1L), .Label = c("g201a", "re20s"), class = "factor")), row.names = c(NA,
-4L), class = "data.frame")