R:当一列中的值在纵向数据中相同时,我如何将最后2-3行保留在相同的ID中



使用R,我想为纵向数据选择相同ID内的最后一行。然而,当时间列中的值与最后一行(ID 1为2行,ID 3为3行(相同时(例如,ID 1为值5,ID 3的值4(,我希望在相同的ID内保留2-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中的最后一行。如有任何帮助,将不胜感激!

您也可以使用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   

相关内容

  • 没有找到相关文章

最新更新