我在R中有一个数据框,其中包含ID.A,ID.B和DISTANCE列,其中distance表示ID.A和ID.B之间的距离。对于ID.A的每个值(1-> n),可能存在ID.B和DISTANCE的多个值(即ID.A中可能存在多个重复的行,例如,值4的所有行均具有不同的ID.B和该行中的距离)。
我希望能够删除重复了ID.A的行,但要以距离值为条件,这样我就为每个ID.A记录留有最小的距离值。
希望这有意义吗?
提前谢谢了
编辑
希望一个例子将比我的文字有用。在这里,我想删除ID.A = 3的第二和第三行:
myDF <- read.table(text="ID.A ID.B DISTANCE
1 3 1
2 6 8
3 2 0.4
3 3 1
3 8 5
4 8 7
5 2 11", header = TRUE)
最佳答案
您也可以在基本R中轻松完成此操作。如果dat
是您的数据框,
do.call(rbind,
by(dat, INDICES=list(dat$ID.A),
FUN=function(x) head(x[order(x$DISTANCE), ], 1)))
关于R,有条件地删除重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835284/