基于2列创建新数据帧

时间:2015-03-01 23:43:42

标签: r

我有一个大型数据集“totaldata”,其中包含与每只动物相关的多行。其中一些是LactationNo 1读数,其他是LactationNo 2读数。我想从LactationNo 1和LactationNo 2中提取所有具有读数的动物并将它们存储在另一个数据帧“lactboth”中 每行中还有16个不同类型的变量列,我需要在新数据帧中保留这些变量。 我已尝试合并,聚合和%in%,但也许我使用它们不正确,例如。

(lactboth <- totaldata[totaldata$LactationNo %in% c(1,2), ])

动物ID 1 列, lactationno 是列 2 。我无法弄清楚如何只选择那些具有LactationNo = 1&amp; 2

的AnimalId

还试过

lactboth <- totaldata[ which(totaldata$LactationNo==1 & totaldata$LactationNo ==2), ]

我觉得这应该很简单,但找不到一个完全相同的例子。帮助赞赏!!

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,那么您的数据集看起来像这样:

  AnimalId LactationNo
1        A           1
2        B           2
3        E           2
4        A           2
5        E           2

并且您想要选择恰好具有哺乳期数1和1的动物。 2(在这个特定的例子中像A一样)。如果是这种情况,那么您只需使用合并:

lactboth <- merge(totaldata[totaldata$LactationNo == 1,],
                  totaldata[totaldata$LactationNo == 2,], 
                  by.x="AnimalId", 
                  by.y="AnimalId")[,"AnimalId"]