2012-08-01 2 views
1

논리 조건을 사용하여 데이터의 서브 세트를 어떻게 만들 수 있습니까?R - 조건 일 경우 데이터 서브 세트

다음과 같은 데이터가 있다고 가정합니다. 나는 모든 동물이 FCR 레코드를 가지고 있다는 첫 번째 조건을 가진 데이터 세트를 서브 세트로 만들고 싶습니다. 그런 다음이 동물들과 함께 모든 동물을 새로운 데이터 세트로 가져 가고 싶습니다.

animal Feed Litter Pen 
1 0.2 5 3 
2 NA 5 3 
3 0.2 5 3 
4 0.2 6 4 
5 0.3 5 4 
6 0.3 4 4 
7 0.3 5 3 
8 0.3 5 3 
9 NA 5 5 
10 NA 3 5 
11 NA 3 3 
12 NA 3 5 
13 0.4 7 3 
14 0.4 7 3 
15 NA 7 5 
+0

'? subset' – johannes

+1

'FCR' 레코드 란 무엇입니까? – A5C1D2H2I1M1N2O1R2T1

답변

2

"FCR 레코드"(질문에서)가 "피드"와 관련 있다고 가정합니다. 내가 제대로 질문을 이해한다면, 당신은이 작업을 수행 할 수 있습니다 위의에서

split(df[complete.cases(df),], df[complete.cases(df), 4]) 
# $`3` 
# animal Feed Litter Pen 
# 1  1 0.2  5 3 
# 3  3 0.2  5 3 
# 7  7 0.3  5 3 
# 8  8 0.3  5 3 
# 13  13 0.4  7 3 
# 14  14 0.4  7 3 
# 
# $`4` 
# animal Feed Litter Pen 
# 4  4 0.2  6 4 
# 5  5 0.3  5 4 
# 6  6 0.3  4 4 

complete.cases 불완전한 관찰의 방울. 특정 변수의 인수와 일치해야하는 경우 complete.cases 대신 df[!is.na(df$Feed), ]과 같은 것을 사용할 수 있습니다. 그런 다음 splitPen으로 나뉘어 data.frames의 목록을 만듭니다.

1
# all animals with Feed data 
df[!is.na(df$Feed), ] 
# all animals from pens with at least one animal with feed data in the pen 
df[ave(!is.na(df$Feed), df$Pen, FUN = any), ] 
관련 문제