我有一些结构类似于的数据:
a <- data.frame("ID" = c("A", "A", "B", "B", "C", "C"),
"NUM" = c(1, 2, 4, 3, 6, 9),
"VAL" = c(1, 0, 1, 0, 1, 0))
Run Code Online (Sandbox Code Playgroud)
我正在尝试对其进行排序ID,NUM然后获取最后一行。此代码用于获取最后一行并将其汇总为唯一 ID,但是,它实际上并没有像我想要的那样获取完整的最后一行。
a <- a %>% arrange(ID, NUM) %>%
group_by(ID) %>%
summarise(max(NUM))
Run Code Online (Sandbox Code Playgroud)
我明白为什么这段代码不起作用,但我正在寻找dplyr获取每个唯一的最后一行的方法ID
预期成绩:
ID NUM VAL
<fct <dbl> <dbl>
1 A 2 0
2 B 4 1
3 C 9 0
Run Code Online (Sandbox Code Playgroud)
注意:我承认,虽然它几乎是Select first and last row from grouped data的副本,但该线程上的答案并不是我想要的。
一种dplyr选择可能是:
a %>%
arrange(ID, NUM) %>%
group_by(ID) %>%
summarise_all(last)
ID NUM VAL
<fct> <dbl> <dbl>
1 A 2. 0.
2 B 4. 1.
3 C 9. 0.
Run Code Online (Sandbox Code Playgroud)
或者因为dplyr 1.0.0:
a %>%
arrange(ID, NUM) %>%
group_by(ID) %>%
summarise(across(everything(), last))
Run Code Online (Sandbox Code Playgroud)