我有这两个数据帧CDD26_FF(5593行(和CDD_HI(5508行(,它们的结构(列(如下。CDD是";连续干燥日";,两个表显示了物种在遥远的未来(FF(和历史时期(HI(暴露于CDD。
我只想把重点放在";Biom";以及";规格名称"列。
正如你所看到的,这两张表有相同的";规范名称"并且相同的";Biom";(世界上有萨马气候条件的地区("Biom";值从0到15。顺便说一下;规格名称"不总是出现在两个表中(例如Abromoco-ben(;此外,这两个表并不总是具有"的组合;规格名称"以及";Biom";(组合只是属于该生物的同一物种的种群(
CDD26_FF:
CDD26_FF | AreaCell | Area_tomal | >Biom | >Species_name | reaCellSuAreaTotal>|||
---|---|---|---|---|---|---|---|
1 | 13 | 10 | |||||
1 | 1 | ||||||
1 | >Abrocomo_cin | ||||||
1 | 10 | 10 | >Abrocomo_cin|||||
1 | 2 | 1 | Abrothrix_an | ||||
1 | 14 | 10 | |||||
1 | 3 | 6 | 2 | 1 | 17 | 12 | >td style="ext-align:centre">Abrothrix_lo|
您可以使用内部联接(由dplyr
提供(。内部联接返回表/data.frame中存在的并且具有匹配条件(在这种情况下:匹配"Biom"one_answers"Species_name"(的所有数据集。
随后,使用mutate
:可以很容易地计算出一些比率
library(dplyr)
cdd26_f %>%
inner_join(cdd_hi, by=c("Biom", "Species_name")) %>%
mutate(ratio = AreaCellSuAreaTotal/AreaCellSuAreaTot_HI) %>%
select(Biom, Species_name, ratio)
返回
# A tibble: 4 x 3
Biom Species_name ratio
<dbl> <chr> <dbl>
1 1 Abrocomo_cin 1
2 10 Abrocomo_cin 0.200
3 1 Abrothrix_an 2
4 10 Abrothrix_an 1
注意:如果需要所有列或为其他列操作select
-部分,请删除它。
数据
cdd26_f <- readr::read_table2("CDD26_FF AreaCell Area_total Biom Species_name AreaCellSuAreaTotal
1 1 13 10 Abrocomo_ben 0.076923
1 1 8 1 Abrocomo_cin 0.125000
1 1 30 10 Abrocomo_cin 0.033333
1 2 10 1 Abrothrix_an 0.200000
1 1 44 10 Abrothrix_an 0.022727
1 3 6 2 Abrothrix_je 0.500000
1 1 7 12 Abrothrix_lo 0.142857")
cdd_hi <- readr::read_table2("CDD_HI AreaCell Area_total Biom Species_name AreaCellSuAreaTot_HI
1 1 8 1 Abrocomo_cin 0.125000
1 5 30 10 Abrocomo_cin 0.166666
1 1 5 2 Abrocomo_cin 0.200000
1 1 10 1 Abrothrix_an 0.100000
1 1 44 10 Abrothrix_an 0.022727
1 6 18 1 Abrothrix_je 0.333333
1 1 23 4 Abrothrix_lo 0.130434")