r - 需要基于两个数据帧中的公共变量,使用来自不同大小数据帧的两列创建丰度值
问题描述
我有两个数据框“Phylum.MYS”(68 x 5)和“Benthic”(13 x 5)
我的目标是在“Phylum.MYS”->“Phylum.MYS$abundace”中创建一个“丰富”列
此列将通过执行 --> "Phylum.MYS$count" / "Benthic$Count" 基于 if "Phlyum$Month_year" == "Benthic$Month_Year" 来保存 "Phylum.MYS$Phylum" 中每个变量的丰度值.y"
感谢帮助!
> 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
推荐阅读
- amazon-web-services - 访问资源 https://sqs.us-east-1.amazonaws.com/ 被拒绝
- vue.js - 如何在 Vue.js 中实现基于会话 cookie 的身份验证?
- java - 我无法在活动的片段中填充 recyclerview
- python - 在没有 .kv 文件的情况下使用屏幕管理器的一些问题
- php - PHP 在几分钟后停止
- html - 以角度 2 解析 json 并显示正确的 html 元素
- python - 使用数据集的一部分来训练我的模型有意义吗?
- html - CSS 媒体查询不适用于 Ipad 设备
- python - 无法在 pandas NamedAgg 函数中使用 lambda 函数
- android - Flutter:尝试在 android 上使用 map_view 显示交互式地图时应用程序崩溃