R dplyr根据乐趣指数汇总一个列值(另一列)

时间:2015-05-05 15:22:57

标签: r dplyr

我有一个数据框,并希望最后显示所需的输出。相反,我在中间得到NA输出。有没有办法用dplyr做我想做的事?

x <- c(1234, 1234, 1234, 5678, 5678)
y <- c(95138, 30004, 90038, 01294, 15914)
z <- c('2014-01-20', '2014-10-30', '2015-04-12', '2010-2-28', '2015-01-01')
df <- data.frame(x, y, z)
df$z <- as.Date(df$z)
df %>% group_by(x) %>% summarise(y = y[max(z)])

What I get:
     x  y
1 1234 NA
2 5678 NA

Desired Output:
     x     y 
1 1234 90038
2 5678 15914

2 个答案:

答案 0 :(得分:7)

您可以尝试which.max获取可用于对'y'元素进行子集化的max值的数字索引。使用max只会提供z的最大值。

df %>%
    group_by(x) %>%
    summarise(y= y[which.max(z)])
#     x     y
#1 1234 90038
#2 5678 15914

答案 1 :(得分:3)

filter中使用maxdplyr

df%>%group_by(x)%>%filter(z==max(z))