【发布时间】:2016-04-13 16:00:02
【问题描述】:
我在 R 中有一个数据框(我们称之为“动物”),其中的列以兔子、猫等动物命名。它看起来像这样:
| Rabbit | Cat | Frog | Cow | Dog |
|--------|-----|------|-----|-----|
| 0 | 1 | 1 | 0 | 1 |
| 0 | 0 | 3 | 1 | 4 |
| 2 | 1 | 0 | 0 | 0 |
列表有数百行,动物(列)也更多。
我想为每个数量大于 0 的动物获取此数据帧的子集。例如,我想要一个子集的 Rabbits 数据帧,其中仅包含 Animals 中 Rabbit > 0 的行。
首先我尝试创建一个变量“物种”:
species <- "Rabbit"
然后,我尝试使用 dplyr 的 filter() 对 Animals 数据框进行子集化:
Rabbits <- filter(Animals, species >= 1)
这不起作用,因为 filter() 试图查找名为“species”而不是“Rabbit”的列。
我创建了“物种”变量,因为我希望通过循环遍历我所有动物名称的向量并将它们子集到相应的数据帧中来自动化该过程。
有没有更有效的方法来解决这个问题?
我对 R 非常陌生,因此任何 ELI5 解释都将不胜感激。谢谢!
【问题讨论】: