小编mgm*_*392的帖子

返回在R中建立"最接近的值"的行

我有一个具有不同ID的数据框,我想创建一个子组,其中:对于每个ID,我将只获得一行,其中最接近的值为0.5,在变量Y中.

这是我的数据框:

df <- data.frame(ID=c("DB1", "BD1", "DB2", "DB2", "DB3", "DB3", "DB4", "DB4", "DB4"), X=c(0.04, 0.10, 0.10, 0.20, 0.02, 0.30, 0.01, 0.20, 0.30), Y=c(0.34, 0.49, 0.51, 0.53, 0.48, 0.49, 0.49, 0.50, 1.0) )

这就是我想要的

ID X Y DB1 0.10 0.49 DB2 0.10 0.51 DB3 0.30 0.49 DB4 0.20 0.50

我知道我可以使用类似这样的东西添加ddply过滤器

ddply(df, .(ID), function(z) { z[z$Y == 0.50, ][1, ] })
如果在Y中总是有0.50的值,这将工作正常,但事实并非如此.

如何将==更改为"最接近"0.5,或者是否有另一个我可以使用的函数?

先感谢您!

r subset plyr

3
推荐指数
1
解决办法
2133
查看次数

标签 统计

plyr ×1

r ×1

subset ×1