我有一个数据框,它由几行组成,“名称”列中的值相同,但“距离”列中的值不同。我想删除“名称”中具有相同条目的所有行,除了距离最小的行。有没有比比较所有行并在比较它们的“距离”值之前检查它们的“名称”条目是否相同更简单的方法?真实的数据框大约是 14000 行 x 14 列。 我一直在寻找答案,但还没有找到任何答案,所以非常感谢您的帮助!
这将是原始数据框:
name distance number
[1,] "apple" "2.5" "4"
[2,] "banana" "3" "6"
[3,] "apple" "1" "2"
[4,] "satsuma" "4" "8"
[5,] "satsuma" "7.5" "1"
[6,] "melon" "3" "3"
[7,] "satsuma" "1" "6"
这是我想要得到的(不一定按这个顺序):
name distance number
[1,] "banana" "3" "6"
[2,] "apple" "1" "2"
[3,] "melon" "3" "3"
[4,] "satsuma" "1" "6"
最佳答案
首先,按 name
和 distance
对 data.frame 进行排序,然后标记要保留的行作为每个名称的第一行:
sorted <- dat[order(dat$name, dat$distance), ]
keep <- c(TRUE, head(sorted$name,-1) != tail(sorted$name,-1))
结果是
sorted[keep, ]
关于R - 比较并删除数据框中具有相同列值的行,同时保留其中一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15793062/