在R中工作,我有一个数据框( species_A ),其中包含几年内观察到的物种以及许多其他信息。我有第二个数据框( species_B ),其中有物种和它们被采样的个别年份。
我想比较物种_A和物种_B,以便物种_A只包含在相应年份的物种_B中列出的物种。
这就是我的数据:
Species_A:
ID__ | __species _____________ | ___年
1 ___ | __Diatoma vulgaris _______ | ___ 2005
2 ___ | __Diatoma vulgaris _______ | ___ 2006
3 ___ | __Nitzschia dissipata _____ | ___ 2006
4 ___ | __Nitzschia palea ________ | ___ 2007
数据帧种类_B以相同的方式构造,但不包含物种_A的所有行。
这是我想出的代码,如果我只想比较物种_A中是否包含物种_A的种类。但是,我想按年份对物种进行分组,然后比较数据帧。
species_A <- species_A[ species_A$species %in% species_B$species, ]
这可以通过dplyr完成吗?
答案 0 :(得分:0)
这可以通过dplyr完成吗?
不确定。
set.seed(256)
library(dplyr)
specA <-
data.frame(id = 1:10,
spec = sample(LETTERS[1:5], 10, TRUE),
year = sample(c(2000:2005), 10, TRUE)) %>%
mutate()
specB <-
data.frame(id = 1:10,
spec = sample(LETTERS[1:5], 10, TRUE),
year = sample(c(2000:2005), 10, TRUE))
specA %>%
inner_join(specB, by = c("spec", "year"))
答案 1 :(得分:0)
如果想进行视觉比较,您应该查找子设置。使用虹膜数据集,这是解决问题的方法:
iris[iris$Species == "setosa",]
这将获得Species等于setosa的所有行。这是更先进的“d子集化
的基础现在我们创建第二个列表来复制您的问题:
other_list <- iris[iris$Species %in% c("setosa", "virginica"),]
现在我们根据另一个过滤原始列表:
iris[iris$Species %in% other_list$Species,]