2017-04-07 6 views
-1

私のデータフレームには多くの論理変数があり、データフレームを複数のサブセットに分割する必要があります。各論理変数の条件はTRUEです。たとえば、のは、これは私のDFであると仮定してみましょう:任意の助けRでは、複数のカテゴリ変数に基づいて複数のサブセットのリストにデータを分割する方法はありますか?

[1] 
    V1 V2 V3 V4 
1 TRUE TRUE FALSE 2 
2 TRUE FALSE TRUE 5 

[2] 
    V1 V2 V3 V4 
1 TRUE TRUE FALSE 2 
2 FALSE TRUE FALSE 4 

[3] 
    V1 V2 V3 V4 
1 TRUE FALSE TRUE 5 

ありがとう:

 V1 V2 V3 V4 
1 TRUE TRUE FALSE 2 
2 TRUE FALSE TRUE 5 
3 FALSE TRUE FALSE 4 

は、だから私は、3つのサブセットを持つようにしたいです!

+0

"data.frame(V = c(T、T、F))はTT Fのようには印刷されないので、これは私のdfだとします" - http://stackoverflow.com/questionsを参照してください。/5963269/how-to-make-a-great-r-reproducible-example/28481250#28481250簡単に再現された例を作成するためのコードの記述に関するガイダンス。 – Frank

答えて

0

シンプルlapplyループはトリックを行う必要があります。

read.table(textConnection("V1 V2 V3 V4 
T T F 2 
T F T 5 
F T F 4"), header=T) -> df 

lapply(1:(ncol(df)-1), function(i) { 
    subset(df, df[[i]]) 
}) 

[[1]] 
    V1 V2 V3 V4 
1 TRUE TRUE FALSE 2 
2 TRUE FALSE TRUE 5 

[[2]] 
    V1 V2 V3 V4 
1 TRUE TRUE FALSE 2 
3 FALSE TRUE FALSE 4 

[[3]] 
    V1 V2 V3 V4 
2 TRUE FALSE TRUE 5 
+0

または単に 'lapply(df [、 - 4]、サブセット、x = df)' – HubertL

-1

あなたの問題は非常に簡単です。

subset1 <- df[df[ ,1]==T, ] 

機能がTの最初の列V1の値を持つ行を取り出している:あなたが使用できる最初のサブセットのために。

もちろん、後で使用するためにそのジョブの機能をすべて設定する場合は、@ thcの解決策が最適です。しかし、3つのサブセットをすばやく素早く取得する必要がある場合は、上記を試してください。

残りの処理方法をsubset2subset3で解説します。

関連する問題