library(dplyr)
a <- data_frame(id = c("A","A","A","B","B","B"),
b = c(1.2, 1.5, 1.8, 1.1, 1.6, 1.4))
现在,我想按id类别检索最接近1.43的值。 我认为可以使用以下代码:
a %>% group_by(id) %>% nth(which.min(abs(.$b-1.43)))
但是dplyr声明
Error: Don't know how to generate default for object of class grouped_df/tbl_df/tbl/data.frame
do.call(rbind...)
,你也可以这样做:a[by(a, a$id, FUN=function(SD) rownames(SD)[which.min(abs(SD$b - 1.43))] ),]
。 - thelatemailslice
函数! - TheSciGuy