1

如何使用逻辑条件对数据进行子集化。

假设我有如下数据。我想用第一个条件对数据集进行子集化,即所有动物都有 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
4

2 回答 2

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创建一个data.frames拆分列表Pen

于 2012-08-01T09:18:24.583 回答
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), ]
于 2012-08-01T12:19:07.260 回答