这可能很容易。数据如下:
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”分组后,我们slice
基于最小“ Distance”的位置进行行。
library(dplyr)
dat %>%
group_by(ID) %>%
slice(which.min(Distance))
使用的类似选项data.table
是
library(data.table)
setDT(dat)[, .SD[which.min(Distance)], by = ID]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句