r - 如何在 R 中分组并选择最低值

标签 r

假设以下数据

OriginId, OriginName, DestinationId, DestinationName,Time
1        ,   Origin 1,   1       ,          Destination 1 , 20
1        ,   Origin 1,   2       ,          Destination 2 , 25
2        ,   Origin 2,   3       ,          Destination 3 , 14
2        ,   Origin 2,   4       ,          Destination 4 , 29

这是一个 CSV,保存出发地和目的地之间的旅行时间。我想找到每个出发地最近的目的地。换句话说,我必须按 OriginId 对数据进行分组,并根据时间对每个组进行排名,并获取排名为 1 的行。因此,上述数据的期望结果是:

OriginId, OriginName, DestinationId, DestinationName,Time(Minute)
1        ,   Origin 1,   1       ,          Destination 1 , 20
2        ,   Origin 2,   3       ,          Destination 3 , 14

group by 之后我需要使用哪个 R 函数?

最佳答案

使用dplyr,可以按'OriginId'分组,然后使用which.min获取具有最小'Time'的'Time'的行索引,提取该行索引带有切片的行。

library(dplyr)
df1 %>%
  group_by(OriginId) %>%
  slice(which.min(Time))

或者,如果我们考虑使用data.table,请将“data.frame”转换为“data.table”(setDT(df1)),按'OriginId',我们获取行索引(如前一种情况)并对数据集的行进行子集化 (.SD)。

library(data.table)
setDT(df1)[, .SD[which.min(Time)], by = OriginId]

关于r - 如何在 R 中分组并选择最低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34178899/

相关文章:

javascript - 在哪里可以找到 R-to-JavaScript 编译器?

html - selectInput 选择显示标签中 Shiny 的额外空白

r 叠加直方图和密度图上的频率计数

r - `geom_text()` 标签非常浅/微弱 - 需要它们正常/深色

根据 R 中的年份范围,将选定列的 NA 替换为 0

regex - gsubfn : differences between perl and tclk?

regex - 使用 dplyr 从 data.table 中删除列

r - 从函数内打印到 R 控制台

r - 导入 "zst"文件?

使用多个 aes 设置绘制构面时从 ggplot 中的图例中删除元素