我有下面的数据框,我想获得最小的行索引 在某些条件下
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(which(....)),但与我要获取的内容不匹配。
我该怎么做?预先谢谢你!
答案 0 :(得分:0)
“索引”是数组中的位置,与行和列的名称不同。您的解决方案取决于“ 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))]
答案 1 :(得分:0)
我假设您希望将#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)
会给您相同的答案