繁体   English   中英

当R dataframe中的列等于1时如何获取行索引?

[英]How to get row index when column equals 1 in R dataframe?

当 dataframe 列等于 1 时,我需要在列表中获取行号。示例代码:

emp.data <- data.frame(
   emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
   salary = c(623.3,515.2,611.0,729.0,843.25),
   start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11",
      "2015-03-27")),
    column = c(0, 1, 0, 1, 1),
   stringsAsFactors = FALSE
)
emp.data <- tail(emp.data, 3)
emp.data

我试过这个:

result <-as.numeric(rownames(emp.data[emp.data$column==1,]))

但我得到了这个 output:

4 5

我需要这样的 output:

2 3

我们可以在逻辑表达式上使用which而不是row.names因为row.names可以不同

which(emp.data$column == 1)

您可以重置行名:

#Code
rownames(emp.data)<-NULL
result <-as.numeric(rownames(emp.data[emp.data$column==1,]))

最快和最优化的方法是(非常感谢@RuiBarradas ):

#Code2
rownames(emp.data)<-NULL
result <- rownames(emp.data)[emp.data$column == 1]

您可以尝试seq_along如下所示

> with(emp.data, seq_along(column)[column == 1])
[1] 2 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM