使用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_by
dx
并使用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