2016-11-22 7 views
1

複数の条件を使用してRでデータフレームをサブセット化する方法がより明確で効率的ですか? ここに私の単純化した例があります。ここで複数の条件を使用してR内のデータフレームを効率的にサブセット化する方法

v1 v2 v3 v4 v5 v6 
1 0 3 0 0 2 
1 1 1 1 2 0 
0 0 0 1 1 0 
0 0 0 0 0 0 

が問題に近づいて私の簡単な方法です:三重(V1、V2、V3およびV4、V5、V6)行につき三連内最大1つの0の値を設定することができ、それ以外の場合は除外されるべきを含む列

data_short<-subset(data, (((v1 != 0 & v2 !=0) | (v1 != 0 & v3 !=0) | (v2 != 0 & v3 !=0)) & ((v4 != 0 & v5 !=0) | (v4 != 0 & v6 !=0) | (v5 != 0 & v6 !=0))) 

v1 v2 v3 v4 v5 v6 
1 1 1 1 2 0 
+2

'のDF [rowSumsをDF [1:3] == 0)<= 1&rowSums(df [、4:6] == 0)<= 1、 ' – HubertL

答えて

5

あなたが任意の最初の3及び3の最後の列のデータが0である時間数カウントするrowSumsを使用することができます(

df <- read.table(text="v1 v2 v3 v4 v5 v6 
1 0 3 0 0 2 
1 1 1 1 2 0 
0 0 0 1 1 0 
0 0 0 0 0 0", header=TRUE) 

df[rowSums(df[,1:3]==0)<=1 & rowSums(df[,4:6]==0)<=1,] 

    v1 v2 v3 v4 v5 v6 
2 1 1 1 1 2 0 
+0

ありがとう、それは仕事をする! – user2904120

関連する問題