R 需要基于两个数据帧中的公共变量,使用来自不同大小数据帧的两列创建丰度值

R 需要基于两个数据帧中的公共变量,使用来自不同大小数据帧的两列创建丰度值,r,dataframe,summarize,R,Dataframe,Summarize,我有两个数据帧“Phylum.MYS”(68 x 5)和“Benthic”(13 x 5) 我的目标是在“Phylum.MYS”-->“Phylum.MYS$abundace”中创建一个“丰度”列 此列将保存“Phylum.MYS$Phylum”中每个变量的丰度值,方法是根据“Phlyum$Month\u year”==“Benthic$Month\u year.y”执行-->“Phylum.MYS$count”/“Benthic$count” 谢谢你的帮助 > head(Phylum.M

我有两个数据帧“Phylum.MYS”(68 x 5)和“Benthic”(13 x 5)

我的目标是在“Phylum.MYS”-->“Phylum.MYS$abundace”中创建一个“丰度”列

此列将保存“Phylum.MYS$Phylum”中每个变量的丰度值,方法是根据“Phlyum$Month\u year”==“Benthic$Month\u year.y”执行-->“Phylum.MYS$count”/“Benthic$count”

谢谢你的帮助

> head(Phylum.MYS)
  Month_Year     Phylum Count Salinity     Date
1    2000-06   Nemertea     6 18.27130 Jun-2000
2    2000-06  Phoronida     2 18.27130 Jun-2000
3    2000-06   Annelida    45 18.27130 Jun-2000
4    2000-06 Arthropoda     9 18.27130 Jun-2000
5    2000-06   Mollusca     2 18.27130 Jun-2000
6    2000-09   Nemertea     2 20.72727 Sep-2000
> head(Benthic)
      Date Month_Year.x Salinity Month_Year.y Count
1 Jun-2000      2000-06 18.27130      2000-06    66
2 Sep-2000      2000-09 20.72727      2000-09    61
3 Jun-2001      2001-06 18.33818      2001-06    62
4 Sep-2001      2001-09 20.95091      2001-09   115
5 Jun-2002      2002-06 20.74917      2002-06    65
6 Jun-2003      2003-06 15.62000      2003-06    81

这就是你要找的吗

library(data.table)
Phylum.MYS <- data.table(Month_Year = c('2000-06','2000-06','2000-06','2000-06','2000-06','2000-09'),
                         Phylum = c('Nemertea','Phoronida','Annelida','Arthropoda','Mollusca','Nemertea'),
                         Count = c(6,2,45,9,2,2))

Benthic <- data.table(Month_Year.y = c('2000-06','2000-09','2001-06','2001-09','2002-06','2003-06'),
                      Count = c(66,61,62,115,65,81))

Phylum.MYS <- merge(Phylum.MYS, Benthic, by.x = 'Month_Year', by.y = 'Month_Year.y',all = TRUE)

Phylum.MYS[, abundance := (Count.x/Count.y)]
Phylum.MYS
库(data.table)
MYS门