代码之家  ›  专栏  ›  技术社区  ›  aelhak

仅限于R中特定年龄段的数据

  •  1
  • aelhak  · 技术社区  · 2 年前

    我有以下长格式数据框,包括列、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]))
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   MrFlick    2 年前

    您可以使用基本的分组筛选命令和使用 any()

    dat %>% 
      filter(any(age<2) & any(age>=5 & age <=7), .by=id)