如何计算列(R)中的更改数量

时间:2019-05-24 08:07:50

标签: r dataframe

df <- data.frame(Name=c('black','white','green','red','brown', 'blue'),
                 Num=c(1,1,1,0,1,0))

在Num列中1变为0的次数是多少?我怎么能用R来计数?

2 个答案:

答案 0 :(得分:2)

一种方法是使用headtail并计数前一个值为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