R - 比较并删除数据框中具有相同列值的行,同时保留其中一个

标签 r dataframe

我有一个数据框,它由几行组成,“名称”列中的值相同,但“距离”列中的值不同。我想删除“名称”中具有相同条目的所有行,除了距离最小的行。有没有比比较所有行并在比较它们的“距离”值之前检查它们的“名称”条目是否相同更简单的方法?真实的数据框大约是 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"   

最佳答案

首先,按 namedistance 对 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/

相关文章:

python - 如何选择包含大于阈值的值的所有行?

scala - 如何验证 Spark Dataframe 的内容

r - 在 x 轴上的离散组之间添加刻度

python - Pandas 数据框应用具有 iterrows 的函数

python-3.x - 如何将单元格添加到 pd.DataFrame 但保留值的类型(np.uint64)?

r - 对齐 ggplot choropleth 的边缘(图例标题各不相同)

r - 使用计算标签从 groupby 创建列

r - 如何分配给R中变量值的names()属性

r - 计算 R 数据框中的百分比变化

r - Dplyr 计数/多个过滤器计数