R-有条件地用另一个数据框中的值替换值

问题描述

我正在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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...