问题描述
我正在R中工作,我有一个非常大的数据框(bulk.df
),其中一列用于物种ID(species
),一列用于调查地点编号(site
) 。每个站点有数百个观测值,并且有25个站点,因此有数千行。
我还有一个单独的数据框(Meta.df
),其中包含25个站点中每个站点的元数据,包括调查深度(depth
)和站点编号列(site
)。
我想在bulk.df中添加一列深度信息,并用与Meta.df
中列出的每个站点相关的深度信息自动填充该列。我复制了bulk.df$site
并将其重命名为depth
,希望找到一种方法,以有条件地用Meta.df
的深度替换此列中的站点编号。
建议表示赞赏!
解决方法
只需使用StreamExt
即可完成任务
use futures::stream::{Stream,StreamExt};
use std::pin::Pin;
trait StreamProvidingTrait {
fn returnastream(&self) -> Pin<Box<dyn Stream<Item = i32>>>;
}
struct StreamProvider {}
impl StreamProvidingTrait for StreamProvider {
fn returnastream(&self) -> Pin<Box<dyn Stream<Item = i32>>> {
return tokio::stream::once(0).boxed();
}
}
fn main() {
let provider = StreamProvider {};
let stream = provider.returnastream();
let _fut = stream.into_future();
}
这将采用dplyr::left_join
数据帧,仅选择列library(dplyr)
final.df <- bulk.df %>%
left_join(
meta.df %>% select(site,depth),by = "site"
)
和meta.df
并将其连接到site
上,并使用公共列depth
作为键来映射两个表。
带有base R
merge(bulk.df,meta.df[c('site','depth')],by = 'site',all.x = TRUE)