我有以下长格式数据框,包括列、id、年龄和BMI。我限制了数据集,只允许在2周至10岁之间至少有3次重复测量的人(id)。
我如何进一步限制此样本,使其仅包括在2周至10岁之间至少有3次重复测量的人(id),并且这些人必须在2岁之前至少有一次测量,在5至7岁之间至少进行一次测量?
换句话说,我想排除id
-
在2岁之前没有对bmi进行任何观察,以及
-
对5至7岁的bmi没有任何观察
我认为蒂迪弗斯
between(x, left, right)
函数可能会起作用,但不确定:
https://dplyr.tidyverse.org/reference/between.html
library(tidyverse)
# load data set & restrict to age between 2 weeks and 10 years
dat <- read.csv((
"https://raw.githubusercontent.com/aelhak/NCRM2023/main/bmi_long.csv")) %>%
select(id, age, bmi) %>% filter(age > 0.038 & age < 10.1)
# restrict to 3+ repeat measurements
dat <- subset(dat, id %in% with(rle(dat$id), values[lengths > 2]))