首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据R中其他数据的列值,将多个数据文件中的值插入到另一个数据文件中

根据R中其他数据的列值,将多个数据文件中的值插入到另一个数据文件中
EN

Stack Overflow用户
提问于 2022-06-02 12:25:32
回答 1查看 107关注 0票数 3

我有一个大型数据(称为dftot),具有多个环境变量列,包括深度、盐度和处理位置。相同的治疗位置被多次使用。为了简化:

代码语言:javascript
复制
 Depth<-c(1,4,33,7,8,20,12,8)
 Treatment<- c("1.1", "1.2", "1.3", "2.1", "2.2", "2.3", "1.1", "1.2")
 dftot<- data.frame(Depth, Treatment)

和一个(目前)空的盐度柱:

代码语言:javascript
复制
 dftot[, "Salinity"] <- NA

此外,对于每个处理地点,我都有一个包含深度和盐度的数据。深度从1到40,我会给出这里的盐度随机数。对于治疗1.1,如下所示:

代码语言:javascript
复制
Depth11<- c(1:40)
Salinity11 <- c(data$newrow <- sample(40, size = nrow(data), replace = TRUE)
tr11<-  data.frame(Depth11, Salinity11)

我需要的是一段代码,对于dftot中的每个处理,选择相应的处理数据,并根据相应的深度将处理数据的盐度值填充到dftot的空盐度列中。

由于我必须这样做的多种治疗,这将是理想的有某种循环,我认为。但是,如果这是不可能的,我也可以为每种治疗运行代码。

非常感谢有人能帮我的忙!

EN

回答 1

Stack Overflow用户

发布于 2022-06-02 12:56:58

下面是使用trXX data.frames的一些合成样例数据的可能分配

代码语言:javascript
复制
# create some sample data
Depth<-c(1,4,33)
Treatment<- c("1.1", "1.2", "1.3")
dftot <- data.frame(Depth, Treatment)
set.seed(123)
tr11 <- data.frame(Depth = 1:40, Salinity = sample(1:100, 40))
tr12 <- data.frame(Depth = 1:40, Salinity = sample(1:100, 40))
tr13 <- data.frame(Depth = 1:40, Salinity = sample(1:100, 40))

## now we code
library(tidyverse)
# build list of all loaded tr.. dataframes
lookup <- mget(ls()[grepl("^tr", ls())]) %>%
  dplyr::bind_rows(.id = "Treatment")
# now operate
dftot %>%
  # get the treamtnet into dftot
  dplyr::mutate(Treatment2 = paste0("tr", gsub("\\.","", Treatment))) %>%
  # join in data from the df.lookup
  dplyr::left_join(lookup, by = c("Treatment2" = "Treatment", "Depth"))

#   Depth Treatment Treatment2 Salinity
# 1     1       1.1       tr11       31
# 2     4       1.2       tr12       13
# 3    33       1.3       tr13       80
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72476255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档