在dplyr中总结日期的最大值 - R.

时间:2016-08-03 00:03:43

标签: r dplyr

我有以下数据,

data

date           ID       value1        value2
2016-04-03     1          0              1
2016-04-10     1          6              2
2016-04-17     1          7              3
2016-04-24     1          2              4
2016-04-03     2          1              5
2016-04-10     2          5              6
2016-04-17     2          9              7
2016-04-24     2          4              8

现在我想按ID分组,找到value2的平均值和value1的最新值。在这个意义上的最新价值,我想得到最新日期的价值,即在这里我想获得每个ID的2016-04-24对应值的value1。我的输出应该是,

ID       max_value1      mean_value2
1             2              2.5
2             4              6.5 

以下是我正在使用的命令,

data %>% group_by(ID) %>% summarize(mean_value2 = mean(value2))

但我不知道如何做第一个。在dplyr中总结时,有人可以帮助我获得最新的value1值吗?

3 个答案:

答案 0 :(得分:5)

一种方式如下。我的假设是ID是一个约会对象。您想使用summarize排列每个ID的日期顺序。然后,您按last()对数据进行分组。在arrange(data,ID,date) %>% group_by(ID) %>% summarize(mean_value2 = mean(value2), max_value1 = last(value1)) # ID mean_value2 max_value1 # <int> <dbl> <int> #1 1 2.5 2 #2 2 6.5 4 中,您可以使用data <- structure(list(date = structure(c(16894, 16901, 16908, 16915, 16894, 16901, 16908, 16915), class = "Date"), ID = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), value1 = c(0L, 6L, 7L, 2L, 1L, 5L, 9L, 4L), value2 = 1:8), .Names = c("date", "ID", "value1", "value2" ), row.names = c(NA, -8L), class = "data.frame") 获取每个ID的最后一个值。

let avc = UIActivityViewController(activityItems: [image], applicationActivities: nil)
avc.completionWithItemsHandler = { (activity, success, items, error) in
     print(success ? "SUCCESS!" : "FAILURE")
}

self.presentViewController(avc, animated: true, completion: nil)

DATA

{{1}}

答案 1 :(得分:2)

以下是data.table

的选项
library(data.table)
setDT(data)[,  .(max_value1 = value1[which.max(date)], 
                        mean_value2 = mean(value2)) , by = ID]
 #   ID max_value1 mean_value2
 #1:  1          2         2.5
 #2:  2          4         6.5

答案 2 :(得分:1)

您可以使用nth中的dplyr函数执行此操作,该函数会找到向量的第n个值。

data %>% group_by(ID) %>% 
summarize(max_value1 = nth(value1, n = length(value1)), mean_value2 = mean(value2))

这是基于假设数据按日期排序,如示例所示;否则使用如上所述的安排。