R编程数据框架 - 基于位置返回值



我想知道是否有一种基于向量中位置的值拔出值的方法,因此我有一个带有两个向量的数据框架,我将它们从RAW分组由v1和v2 v1,就像在sql中的订单一样。当我尝试拿出每个V1组类型的第3分钟时,我的问题就会出现。

订购的数据框架...

V1  V2
Ford    18
Ford    16
Ford    15
Ford    14
Ford    12
**Ford  5**
Ford    2
Ford    1
Nisan   10
Nisan   9
Nisan   8
Nisan   7
Nisan   6
**Nisan     5**
Nisan   4
Nisan   3
Toyota  20
Toyota  19
Toyota  15
Toyota  12
Toyota  11
**Toyota    10**
Toyota  6
Toyota  2

结果我想要在新的数据框架中,每个变量的第三分钟值...

V1 V2
Ford 5
Nisan 5
Toyota 10

预先感谢。

使用base r你可以做

之类的事情
aggregate(V2 ~ V1, df[order(df$V2), ], `[`, 3L)
#       V1 V2
# 1   Ford  5
# 2  Nisan  5
# 3 Toyota 10

或(通过@akruns评论)使用ave

df[with(df, ave(V2, V1, FUN = order)) == 3L,]

尝试

library(data.table)#v1.9.5+
setDT(df1)[order(V2), list(V2=V2[3L]), by = V1]

或如@davidarenburg在评论中提到的

setDT(df1)[, .SD[frank(V2, ties.method = "dense") == 3L], by = V1]

library(dplyr)
 df1 %>% 
     group_by(V1) %>%
     filter(rank(V2)==3)

 df1 %>%
     group_by(V1) %>% 
     arrange(V2) %>%
     slice(3L)

最新更新