2012-08-01 68 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 2012-08-01 09:14:28

+1

什麼是FCR記錄? – A5C1D2H2I1M1N2O1R2T1 2012-08-01 09:19:23

回答

2

我假設「FCR記錄」(在您的問題中)與「Feed」有關。然後,如果我理解正確的問題,你可以這樣做:

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丟棄所有不完整的意見。如果您需要匹配特定變量的參數,則可以使用df[!is.na(df$Feed), ]之類的值代替complete.cases。然後,split創建一個由Pen分割的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), ]