如果行等于1,请选择行名称

时间:2016-06-16 08:58:25

标签: r dataframe

我需要解决以下问题,但似乎无法解决这个问题...... 如果OIL_BE_pet之类的行等于1,我需要像下面那样的数据帧的行名。当然,原始数据大于这2列和4行。每行最多只有一个" 1"。我希望这些行名称按顺序显示在数据框中。

                      OIL_BE_pet      OIL_BE_pet2
Terminal One                0              0
Terminal Two                1              0
Terminal Three              0              1
Terminal Four               0              0

这里的解决方案是" Terminal Two"," Terminal Three"。

提前致谢!

3 个答案:

答案 0 :(得分:4)

我可以建议rowSums()

rownames(df)[rowSums(df)>0];
## [1] "Terminal Two"   "Terminal Three"

数据

df <- data.frame(OIL_BE_pet=c(0L,1L,0L,0L),OIL_BE_pet2=c(0L,0L,1L,0L),row.names=c(
'Terminal One','Terminal Two','Terminal Three','Terminal Four'));

答案 1 :(得分:1)

我们可以将{ "_id" : "1", "_class" : "com.mongodb.BasicDBObject", "tags" : [ { "tag" : "tagName" }, { "tag" : "tagName" }, { "tag" : "tagName" }, { "tag" : "tagName" }, { "tag" : "tagName" } ] } which

一起使用
arr.ind=TRUE

答案 2 :(得分:0)

您可以使用以下代码:

df[as.logical(apply(df,1,sum)),]

它的工作原理是逐行求和,找出哪些行具有非零和,然后用这些行对数据帧进行子集化。

这给出了结果:

> df[as.logical(apply(df,1,sum)),]
               OIL_BE_pet OIL_BE_pet2
Terminal Two            1           0
Terminal Three          0           1