根据排序的值在数据框中选择唯一值

时间:2018-12-23 00:40:54

标签: r sorting filter dplyr data.table

是否有人根据第二个值的最大值从数据框中选择了唯一值?

示例:

name value
cheese 15
pepperoni 12
cheese 9
tomato 4
cheese 3
tomato 2

我想出的最好方法-我确信有更好的方法-是按值降序对df进行排序,提取df $ name,在其上运行unique(),然后与dplyr进行左连接。

理想的结果是:

name value
cheese 15
pepperoni 12
tomato 4

谢谢!

1 个答案:

答案 0 :(得分:4)

看到期望的结果,对于每个name,您正在寻找编号最大的行。下面是实现此任务的一种方法。

library(dplyr)
group_by(mydf, name) %>%
slice(which.max(value))

# A tibble: 3 x 2
# Groups:   name [3]
#  name      value
#  <fct>     <int>
#1 cheese       15
#2 pepperoni    12
#3 tomato        4

数据

mydf <- structure(list(name = structure(c(1L, 2L, 1L, 3L, 1L, 3L), .Label = c("cheese", 
"pepperoni", "tomato"), class = "factor"), value = c(15L, 12L, 
9L, 4L, 3L, 2L)), class = "data.frame", row.names = c(NA, -6L
))