Ahora tengo un marco de datos de varias columnas, que contiene id, número de semanas, ... Y quiero comparar el número de semanas dentro de cada identificación y generar la semana consecutiva. El marco de datos se ve así:
ingrese la descripción de la imagen aquí

El problema es que, si quiero seleccionar las filas específicas con al menos 2 semanas consecutivas dentro de una identificación específica, ¿cómo debo implementar la declaración condicional dentro de group_by (id)?

La salida debe ser ingrese la descripción de la imagen aquí

Ahora mi idea es usar group_modify () o group_map ()

r
0
Drick 14 mar. 2021 a las 22:03

1 respuesta

La mejor respuesta

Dentro de cid, la expresión week_num - 1: n () transformará las secuencias en valores constantes para que podamos agrupar por cid y esa expresión y extraer todas las que tengan más de una fila.

library(dplyr)

DF %>%
  group_by(cid) %>%
  group_by(w = week_num -  1:n(), .add = TRUE) %>%
  filter(n() > 1) %>%
  ungroup %>%
  select(-w)

Dando:

# A tibble: 4 x 2
    cid week_num
  <dbl>    <dbl>
1     3       13
2     3       14
3     3       46
4     3       47

Nota

DF <- data.frame(cid = c(1, 2, 3, 3, 3, 3, 3),
  week_num = c(1, 2, 1, 13, 14, 46, 47))
1
G. Grothendieck 14 mar. 2021 a las 19:22