2016-06-21 5 views
0

データフレームには、特定の列にあることがわかっている場合にのみ関数を実行したいというデータフレームがあります(11列あり、それらの)2つ以上の値がある(例えば、それらはすべて2ではない)。これを見つける特定の機能はありますか、各列をループしてチェックする必要がありますか?R:列に2つ以上の値があるかどうかを確認する

答えて

2

我々は、列をループにsapplyを使用し、各列のuniqueの要素を取得し、lengthはそれが必要な場合は、データセットのサブセット化のために使用することができる論理ベクトルを与える1よりも大きいかどうかを確認することができます。

i1 <- sapply(df1, function(x) length(unique(x)) >1) 
df1[i1] 

または列をサブセットに別のオプション各列の実行length(unique(x))についてfilter

Filter(var, df1) 
+1

ありがとうございます!これは私がやったよりはるかに効率的です。 –

+0

これは詐欺ではいけません(http://stackoverflow.com/questions/31409269/returning-only-column-values-that-have-more-than-1-unique-values-in-r)? ;-) – Jaap

+0

@ProcrastinatusMaximusそれは可能かもしれませんが、ここでOPは列のサブセットではなくインデックスのみを望むようです。だから、私はそれが欺瞞だとは思わない。 – akrun

0

になります。これにより、固有の列の数が出力されます。より多くの情報を提供した場合、これは、length(unique(x))の合計に基づいて実行するかどうかを決定する関数にネストすることができます。

関連する問題