#r
Вопрос:
У меня есть набор данных, который выглядит так:
Group ID
UP 1
UP 1
UP 2
UP 2
UP 2
UP 1
UP 1
UP 2
UP 2
UP 1
UP 1
Есть ли какой-нибудь способ узнать, сколько раз 1 находится под 1 в столбце идентификатора?
Ответ №1:
Работает ли это:
library(dplyr)
df %>% mutate(flag = case_when(ID == 1 amp; lag(ID) == 1 ~ 1, TRUE ~ 0)) %>% pull(flag) %>% sum
[1] 3
Комментарии:
1. @StackOverload9, просто поменяйся
ID == 2
Ответ №2:
Основание R :
sum(df$ID == 1 amp; c(tail(df$ID, -1), NA) == 1, na.rm = TRUE)
#[1] 3
Вы также можете использовать dplyr::lag
и data.table::shift
sum(df$ID == 1 amp; dplyr::lag(df$ID) == 1, na.rm = TRUE)
sum(df$ID == 1 amp; data.table::shift(df$ID) == 1, na.rm = TRUE)