r - 基于最小值的子集数据

标签 r subset dplyr plyr

这可能很简单。这是数据:

dat <- read.table(header=TRUE, text="
Seg  ID  Distance
Seg46      V21 160.37672
Seg72      V85 191.24400
Seg373      V85 167.38930
Seg159     V147  14.74852
Seg233     V171 193.01636
Seg234     V171 200.21458

                   ")
dat
Seg  ID  Distance
Seg46      V21 160.37672
Seg72      V85 191.24400
Seg373      V85 167.38930
Seg159     V147  14.74852
Seg233     V171 193.01636
Seg234     V171 200.21458

我打算得到一个像下面这样的表格,它会给我 Seg 以最小化距离(因为在 ID 中可以看到重复。

Seg Crash_ID  Distance
Seg46      V21 160.37672
Seg373      V85 167.38930
Seg159     V147  14.74852
Seg233     V171 193.01636

我正在尝试使用 ddply 来解决它;但它没有到达那里。

ddply(dat, "Seg", summarize, min = min(Distance))
Seg       min
Seg159  14.74852
Seg233 193.01636
Seg234 200.21458
Seg373 167.38930
Seg46 160.37672
Seg72 191.24400

最佳答案

我们可以使用 which.min 对行进行子集化。用'ID'分组后,我们根据最小'Distance'的位置slice行。

library(dplyr)
dat %>% 
   group_by(ID) %>% 
   slice(which.min(Distance))

使用 data.table 的类似选项是

library(data.table)
setDT(dat)[, .SD[which.min(Distance)], by = ID]

关于r - 基于最小值的子集数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32377541/

相关文章:

R: UseMethod 错误 ("tbl_vars")

r - 在 R 表示中使用 æøå 字符作为变量名

sql - 如何使用 R 中其他数据帧的列查询数据帧

r - R : How to set fpc argument (finite population correction) 中的调查包

R - 读取内联base64 png图像并解析文本

algorithm - 从子集列表中查找所有分区

r - 用NA水平分割一个因子

r - 确定函数返回值是否为 dplyr 对象

r - 在 R 中按字母顺序排列字母数字列名称

r - 为什么 subset 只返回奇数行?