首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据条件从另一个数据帧中减去数据帧中的值

根据条件从另一个数据帧中减去数据帧中的值
EN

Stack Overflow用户
提问于 2019-01-30 11:42:20
回答 1查看 49关注 0票数 0

我有一个数据框,其中包含一堆站点在不同年份和月份的AHD值。我有另一个数据框,其中包含每个场地最多4个地块的高程数据。我需要从每个湿地的每个地块的高程中减去测量的AHD。这是一个很大的数据集,所以我一直在尝试使用循环来最小化所需的代码量。

我一直在尝试使用嵌套循环从一个数据帧中拉出值,从而从另一个data.frame中减去值。我好像不能让它工作。

代码语言:javascript
复制
# Example data
Dates <- rep(seq(as.Date("1/1/2010"), by = "month", length.out = 24),5)
Site <- rep(letters[1:5], each=24)
AHD <- runif(120, min = 12, max = 50)
df1 <- data.frame(cbind(as.Date(Dates), Site, AHD))
df1$AHD <- as.numeric(df1$AHD)

Site <- rep(letters[1:5], each=4)
Plot <- rep(LETTERS[seq( from = 1, to = 4 )],5)
elv <- runif(20, min = 12, max = 50)
df2 <- data.frame(cbind(Site, Plot, elv))
df2$elv <- as.numeric(df2$elv)

我所追求的是一个data.frame,其中包含了每个地点的每个地块的调整后的AHD值。生成的data.frame将包含列'data‘、'site’、'plot‘和'adjAHD’,其中'adjAHD‘= df1$AHD - df2$elv。此数据帧将有600 (120 X 5)行,因为每个站点的每个日期都将为四个图复制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-30 11:53:24

使用akrun解释的方法:

代码语言:javascript
复制
df3 <- merge(df1, df2, by = "Site")
df3$adjAHD <- df3$AHD - df3$elv

head(df3)
# Site      V1 AHD Plot elv adjAHD
# 1    a -719143  86    A   4     82
# 2    a -719143  86    B  15     71
# 3    a -719143  86    C  17     69
# 4    a -719143  86    D   9     77
# 5    a -719112  45    A   4     41
# 6    a -719112  45    B  15     30

dim(df3)
# [1] 480   6
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54433049

复制
相关文章

相似问题

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