R 分组函数到行中的 select 最后一个值

R grouping function to select last value in the row

给出这样的数据集

    date        X
    2012-10-02  2210
    2012-10-02  2215
    2012-10-03  410
    2012-10-03  430
    2012-10-03  535
    2012-10-03  550
    2012-10-04  555
    2012-10-04  600
    2012-10-04  605
    2012-10-04  610

如何在 R 语言中 aggregate/Group 日期和 select 仅 X 上的最后一个值。

    date        X
    2012-10-02  2215
    2012-10-03  550
    2012-10-04  610

如果我需要按日期对 X 求和,那么我可以使用聚合函数

   aggregate(x, by=list(x=date), FUN=sum)

但我的要求是只select每组的最后一行。这个怎么做。请指教

你可以试试

library(data.table)
setDT(df1)[,list(X=X[.N]) , date]
#        date    X
#1: 2012-10-02 2215
#2: 2012-10-03  550
#3: 2012-10-04  610

或使用base R

 aggregate(X~date, df1,FUN=tail,1)
 #        date    X
 #1 2012-10-02 2215
 #2 2012-10-03  550
 #3 2012-10-04  610

或使用dplyr:

library(dplyr)

df %>%
  group_by(date) %>%
  slice(n()) # selects only the last row (nth row of n total) within each subgroup

生产:

Source: local data frame [3 x 2]
Groups: date

        date    X
1 2012-10-02 2215
2 2012-10-03  550
3 2012-10-04  610