我需要解决以下问题,但似乎无法解决这个问题...... 如果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"。
提前致谢!
答案 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