df <- data.frame(Name=c('black','white','green','red','brown', 'blue'),
Num=c(1,1,1,0,1,0))
在Num列中1变为0的次数是多少?我怎么能用R来计数?
答案 0 :(得分:2)
一种方法是使用head
,tail
并计数前一个值为1而当前值为0的实例。
sum(head(df$Num, -1) == 1 & tail(df$Num, -1) == 0)
#[1] 2
使用与dplyr
lead
/ lag
相同的逻辑
library(dplyr)
df %>% filter(Num == 0 & lag(Num) == 1) %>% nrow()
df %>% filter(Num == 1 & lead(Num) == 0) %>% nrow()
答案 1 :(得分:0)
我们可以只使用rle
中的base R
sum(rle(df$Num)$values)
#[1] 2
或者使用rleid
中的data.table
library(data.table)
nrow(setDT(df)[, .N[any(Num > 0)] , rleid(Num)])
#[1] 2