我有一个像这样的数据框
ColumnName1 ColumnName2 ColumnName3...
0.0 0.2 0.0
0.2 0.0 0.0
在此数据框中,始终有一个(且只有一个!)列的值> 0。因此,我希望在此单元格中使用列名,而不是值0.2。所以最后我想要一个新的数据帧,只显示值大于0的列。我能做到这一点吗?
ColumnName2
ColumnName1
...
这正确地选择了数据:
Test[Test>0]
但是这总是返回NULL:
colnames(Test[Test>0])
答案 0 :(得分:1)
继续使用布尔值,您可以尝试:
colnames(tab)[colSums(t(tab>0)*(1:ncol(tab)))]
# or
apply(tab>0, 1, function(x) colnames(tab)[x])
答案 1 :(得分:1)
这样的事可能
apply(df, 1, function(x){names(x)[x > 0]})
# [1] "ColumnName2" "ColumnName1"