我有以下数据框,我想在某些条件下获得最小行索引
collect_date a b
--------------------------
2018-09-04 14:00 1 1
2018-09-04 15:00 1 1
2018-09-04 16:00 1 1
2018-09-05 17:00 1 1
2018-09-05 18:00 1 1
2018-09-05 01:00 1 0
2018-09-05 02:00 1 0
我想在2018-09-05&b == 0时选择最低行最小索引号?我尝试了min(哪个(....)),但它与我想要的不匹配。 我该怎么做?先感谢您!
“index”是数组中的位置,与行和列的名称不同。您的解决方案取决于“row.names”和“names”,并且不返回索引。更安全的方法(特别是在大型数组上)将是:
(df < - data.frame(x = runif(10),y = runif(10)))
which.min(apply(df,MARGIN=2,min))
which.min(apply(df,MARGIN=1,min))
如果您想要关联的列或行名称,则可以将此索引与names()或rownames()一起使用。
names(df)[which.min(apply(df,MARGIN=2,min))]
rownames(df)[which.min(apply(df,MARGIN=1,min))]
我假设你想要#6作为输出,
library(data.table)
df <- fread("collect_date a b
2018-09-04 1 1
2018-09-04 1 1
2018-09-04 1 1
2018-09-05 1 1
2018-09-05 1 1
2018-09-05 1 0
2018-09-05 1 0")
df <- as.data.frame(df)
这会给你你想要的,
min(which(df$collect_date == "2018-09-05" & df$b == 0))
或者@Ronak Shah提到,
which.max(df$collect_date == "2018-09-05" & df$b == 0)
会给你相同的答案