2017-04-07 2 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 

그래서 내가 세 가지 하위 집합을 갖고 싶어!

+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의 솔루션이 가장 좋습니다. 하지만 세 가지 하위 집합을 멋지게 빨리 가져와야하는 경우 위의 방법을 시도해보십시오.

subset2subset3으로 나머지 작업을 수행하도록하겠습니다.