如何从数据框中选择最小行索引?

问题描述 投票:0回答:2

我有以下数据框,我想在某些条件下获得最小行索引

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(哪个(....)),但它与我想要的不匹配。 我该怎么做?先感谢您!

r indexing min
2个回答
0
投票

“index”是数组中的位置,与行和列的名称不同。您的解决方案取决于“row.names”和“names”,并且不返回索引。更安全的方法(特别是在大型数组上)将是:

(df < - data.frame(x = runif(10),y = runif(10)))

Return min col index

  which.min(apply(df,MARGIN=2,min))

Return min row index

  which.min(apply(df,MARGIN=1,min))

如果您想要关联的列或行名称,则可以将此索引与names()或rownames()一起使用。

Column name with minimum value

names(df)[which.min(apply(df,MARGIN=2,min))]

Row name with minimum value

rownames(df)[which.min(apply(df,MARGIN=1,min))]

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)

会给你相同的答案

© www.soinside.com 2019 - 2024. All rights reserved.