我有以下数据,
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
Run Code Online (Sandbox Code Playgroud)
现在我想按ID分组,找到value2的平均值和value1的最新值.在这个意义上的最新价值,我想得到最新日期的价值,即在这里我想得到每个ID的2016-04-24对应值的value1.我的输出应该是,
ID max_value1 mean_value2
1 2 2.5
2 4 6.5
Run Code Online (Sandbox Code Playgroud)
以下是我正在使用的命令,
data %>% group_by(ID) %>% summarize(mean_value2 = mean(value2))
Run Code Online (Sandbox Code Playgroud)
但我不知道如何做第一个.在dplyr中总结时,有人可以帮助我获得最新的value1值吗?
一种方法是以下.我的假设是这date是一个约会对象.您想使用安排每个ID的日期顺序arrange.然后,按以下方式对数据进行分组ID.在summarize,您可以使用last()为每个ID获取最后一个值1.
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
Run Code Online (Sandbox Code Playgroud)
数据
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")
Run Code Online (Sandbox Code Playgroud)