【问题标题】:R: How can I retain the 2-3 last rows within the same IDs when the values in a column are the same in longitudinal data?R:当一列中的值在纵向数据中相同时,如何保留相同 ID 中的最后 2-3 行?
【发布时间】:2022-03-04 19:21:29
【问题描述】:

使用 R,我想为纵向数据选择相同 ID 中的最后一行。但是,当时间列中的值相同时(例如,ID 1 的值 5 和 ID 3 的值 4)对于最后一行(ID 1 为 2 行),我想在相同的 ID 中保留 2-3 行ID 3 为 3 行)。如果相同 ID 中时间列中的值不同,我只想保留最后一行(例如,ID 2 的值为 7)。

我的数据框如下:

id time    dx    code
1   1   primary   A1
1   5   primary   D2
1   5   secondary B3
2   1   primary   A2
2   7   primary   C4
3   4   primary   A1
3   4   secondary B3
3   4   tertiary  D2

我想要以下结果:

id time    dx    code
1   5   primary   D2
1   5   secondary B3
2   7   primary   C4
3   4   primary   A1
3   4   secondary B3
3   4   tertiary  D2

当我使用以下 R 脚本 d %>% group_by(id) %>% filter(row_number() == n()) 时,它们只保留了每个 ID 中的最后一行。任何帮助,将不胜感激!

【问题讨论】:

    标签: r if-statement select longitudinal


    【解决方案1】:

    你也可以group_bydx 使用slice_tail

    dat %>% 
      group_by(id, dx) %>% 
      slice_tail(n = 1)
    
    # A tibble: 6 x 4
    # Groups:   id, dx [6]
         id  time dx        code 
      <int> <int> <chr>     <chr>
    1     1     5 primary   D2   
    2     1     5 secondary B3   
    3     2     7 primary   C4   
    4     3     4 primary   A1   
    5     3     4 secondary B3   
    6     3     4 tertiary  D2   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 2018-08-09
      • 2010-11-29
      相关资源
      最近更新 更多