带dplyr的分组最小值或最大值?

带dplyr的分组最小值或最大值?,r,dplyr,greatest-n-per-group,R,Dplyr,Greatest N Per Group,我想根据变量的最小值来子集我的tbl 我发现一个SO帖子已经在使用data.table。有没有一种使用dplyr的方法 > glimpse(x) Observations: 3,074,921 Variables: 9 $ sessionId <chr> "1468614023881.kvz0h9ofxbt9", "1469063434066.e9h65wdygb9", "1469240810386.2k47r07tx1or", "146933076... $ dateHour

我想根据变量的最小值来子集我的tbl

我发现一个SO帖子已经在使用data.table。有没有一种使用dplyr的方法

> glimpse(x)
Observations: 3,074,921
Variables: 9
$ sessionId <chr> "1468614023881.kvz0h9ofxbt9", "1469063434066.e9h65wdygb9", "1469240810386.2k47r07tx1or", "146933076...
$ dateHour    <chr> "2016080106", "2016080118", "2016080119", "2016080120", "2016080108", "2016080106", "2016080117", "...
$ minute      <ord> 25, 10, 30, 38, 32, 12, 42, 32, 42, 39, 32, 20, 0, 4, 39, 46, 54, 32, 46, 46, 33, 53, 51, 2, 22, 36...
$ userType    <chr> "New Visitor", "New Visitor", "New Visitor", "New Visitor", "New Visitor", "New Visitor", "Returnin...
$ region      <chr> "Virginia", "Washington", "Chihuahua", "Missouri", "Nevada", "Minnesota", "Oklahoma", "(not set)", ...
$ metro       <chr> "Roanoke-Lynchburg VA", "Seattle-Tacoma WA", "(not set)", "Joplin MO-Pittsburg KS", "Reno NV", "Min...
$ city        <chr> "Roanoke", "Camano Island", "Ciudad Juarez", "Joplin", "Reno", "Owatonna", "Edmond", "Port-au-Princ...
$ sessions    <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
$ dhm         <chr> "201608010625", "201608011810", "201608011930", "201608012038", "201608010832", "201608010612", "20...

dhm变量是dateHour和minute列的串联。我的数据有一些重复的会话ID,我想检索行,在重复的情况下,我会根据mindhm获取会话ID的最早条目。

每个会话的组数据,并由dhm安排。然后,每个会话只筛选出前几行

dat %>% group_by(sessions) %>% arrange(dhm) %>% filter(row_number() == 1)
或者正如评论中指出的那样

dat %>% group_by(sessions) %>% filter(which.min(dhm)==row_number())

我很确定使用which.min和subset比在vs登录n上安排整个组更有效。如果要安排,可能最好先安排整个数据集,而不是为每个会话重新安排每个组,谢谢你的建议!感谢您的回答、评论和类似问题的链接。我尝试了第二个选项并收到错误:筛选条件的计算结果不是逻辑向量。因此,我尝试了这个选项,在这个问题下的链接上使用which.minsessionId已经在这里有了答案:。这就成功了。