[英]Create a row with sequence of nymbers based on column value
我有一個數據集,其中行序列與一個客戶端相關。 每個客戶端的最后一行是“狀態正常”。 因此,我的數據由塊組成,每個塊都與一個客戶相關。 我需要創建一個列來顯示所有塊行中的客戶端數量。 例如我的數據是:
x = data.frame(A = c('name1', 'address1', 'status1', 'name2', 'address2', 'status2'), B= c('John', 'Texas', 'OK', 'William', 'Florida', 'OK')) x
我預期的 output 是:
x = data.frame(A = c('name1', 'address1', 'status1', 'name2', 'address2', 'status2'), B = c('John', 'Texas', 'OK', 'William', 'Florida', 'OK'), C = c('1', '1', '1', '2', '2', '2')) x
謝謝。
您可以使用cumsum
:
library(dplyr)
x %>% mutate(C = lag(cumsum(B == 'OK'), default = 0) + 1)
# A B C
#1 name1 John 1
#2 address1 Texas 1
#3 status1 OK 1
#4 name2 William 2
#5 address2 Florida 2
#6 status2 OK 2
您可以簡單地提取客戶端 ID:
x$C <- stringr::str_extract(x$A, "[0-9]+")
另外的選擇:
x$C <- as.numeric(gsub('[^0-9]', "", x$A))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.