![](/img/trans.png)
[英]Removing a row from a Dataframe if text in column 1 equals text in column 2 (in r)
[英]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.