获取 R 中每组的最后一行

Bea*_*ear 2 r dataframe dplyr

我有一些结构类似于的数据:

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)

我正在尝试对其进行排序IDNUM然后获取最后一行。此代码用于获取最后一行并将其汇总为唯一 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的副本,但该线程上的答案并不是我想要的。

tmf*_*mnk 9

一种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)


jor*_*ran 8

你可以试试:

a %>% 
  group_by(ID) %>% 
  arrange(NUM) %>%  
  slice(n())
Run Code Online (Sandbox Code Playgroud)