R:当列中的值在纵向数据中相同时,如何保留相同 ID 中的最后 2-3 行?
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,我想 select 纵向数据相同 ID 中的最后一行。但是,当时间列中的值相同时(例如,ID 1 的值为 5,ID 3 的值为 4),我想在相同的 ID 中保留最后 2-3 行(ID 1 为 2 行)和 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 中的最后一行。如有任何帮助,我们将不胜感激!
您也可以 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
使用 R,我想 select 纵向数据相同 ID 中的最后一行。但是,当时间列中的值相同时(例如,ID 1 的值为 5,ID 3 的值为 4),我想在相同的 ID 中保留最后 2-3 行(ID 1 为 2 行)和 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 中的最后一行。如有任何帮助,我们将不胜感激!
您也可以 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