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
给出这样的数据集
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