获取R中每个组的最后一行

获取R中每个组的最后一行,r,dataframe,dplyr,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)) 我理解为什么这个代码不起作用,但我正在寻找dplyr方法来获取每个唯一ID 预期成果: ID NUM VAL <fct <db

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

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))
我理解为什么这个代码不起作用,但我正在寻找
dplyr
方法来获取每个唯一
ID

预期成果:

  ID        NUM     VAL
  <fct    <dbl>    <dbl>
1 A           2       0
2 B           4       1
3 C           9       0
ID NUM VAL
您可以尝试:

a %>% 
  group_by(ID) %>% 
  arrange(NUM) %>%  
  slice(n())
您可以尝试:

a %>% 
  group_by(ID) %>% 
  arrange(NUM) %>%  
  slice(n())
tail()
返回子可附加对象的最后6项。使用
aggregate()
时,
FUN
参数的参数会在函数之后立即使用逗号传递;这里的
1
指的是
n=1
,它告诉
tail()
只返回最后一项

aggregate(a[, c('NUM', 'VAL')], list(a$ID), tail, 1)

# Group.1 NUM VAL
# 1       A   2   0
# 2       B   3   0
# 3       C   9   0
tail()
返回子可附加对象的最后6项。使用
aggregate()
时,
FUN
参数的参数会在函数之后立即使用逗号传递;这里的
1
指的是
n=1
,它告诉
tail()
只返回最后一项

aggregate(a[, c('NUM', 'VAL')], list(a$ID), tail, 1)

# Group.1 NUM VAL
# 1       A   2   0
# 2       B   3   0
# 3       C   9   0

您可以使用
top\n
。(分组已按
ID
排序,无需按
NUM
排序,因为只有1个值)

库(dplyr)
a%>%
分组依据(ID)%>%
顶部(1,数量)
##tibble:3 x 3
##组:ID[3]
#ID NUM VAL
#     
#1A20
#2 B 4 1
#3 C 9 0

您可以使用
top\n
。(分组已按
ID
排序,无需按
NUM
排序,因为只有1个值)

库(dplyr)
a%>%
分组依据(ID)%>%
顶部(1,数量)
##tibble:3 x 3
##组:ID[3]
#ID NUM VAL
#     
#1A20
#2 B 4 1
#3 C 9 0

一个
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.

一个
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.

这将有助于我们解释它的作用,以及它解决老年退休金问题的原因。这将有助于我们解释它的作用,以及它解决老年退休金问题的原因。