我有这个数据框
df <- structure(list(a = 1:20, b = c(4, 2, 5, 6, 2, 4, 7, 4, 9, 7, 6, 1, 1, 5, 2, 1, 9, 8, 6, 3), c = c(340, 200, 130, 730, 710, 340, 200, 130, 730, 710, 340, 200, 130, 730, 710, 340, 200, 130, 730, 710)), .Names = c("a", "b", "c"), row.names = c(NA, -20L), class = "data.frame")
我想要的输出是
的索引which.min(df[1:V,3])
其中V是行号,例如
V <- 10
但是,我想要以下限制:
df[which(df$a<=df$b[V]),]
我想我已经尝试过任何组合来将这些组合在一起(例如with()
),但我无法让它发挥作用。我该怎么办?
答案 0 :(得分:1)
这是你在找什么?
which.min(with(df, df[a<=b[V],])[1:V,3])
#[1] 3
答案 1 :(得分:1)
使用data.table
代替data.frame
,可以用更易读的方式表示:
library(data.table)
dt = as.data.table(df)
dt[a <= b[V]][1:V, which.min(c)]
#[1] 3