【问题标题】:Restrict a dataframe based on age at measurement根据测量年龄限制数据框
【发布时间】:2019-12-12 12:05:53
【问题描述】:

我有一个长格式的数据框,其中包含关于 id、年龄和身高的重复数据。如何限制数据集,使其仅包含从 5 岁开始进行至少 1 次测量的人,以及在 9 到 20 岁之间进行至少 1 次测量的人。

(因此,如果一个人只有 1 个身高测量值并且是在 9 岁之前测量的,那么他们将被排除在外(因为他们在 9 到 20 岁之间也没有其他测量值)

# LOAD SITAR PACKAGE WITH EXAMPLE DATASET 
library(sitar)

data <- berkeley %>% select(id, age, height)
summary(data)

#THIS RESTRICTS TO HEIGHTS TAKEN >= age 5: HOW TO ALSO RESTICT TO >=1 MEASURE BETWEEN AGE 9 and 20?
data <- data %>% filter(age!="NA" & height!="NA" & age>=5)

【问题讨论】:

    标签: r dplyr data-manipulation missing-data


    【解决方案1】:

    你可以的

    library(dplyr)
    
    data %>%
      group_by(id) %>%
      filter(any(age  > 5 & between(age, 9,20))) 
    

    但在您的示例中,所有ids 似乎都满足这两个标准。

    【讨论】:

      【解决方案2】:

      data.table 的选项

      library(data.table)
      setDT(data)[, .SD[any(age > 5 & between(age, 9, 20))], id]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        • 2011-05-26
        • 1970-01-01
        • 2023-03-30
        相关资源
        最近更新 更多