简体   繁体   English

R-从具有2个数据帧的多列中减去多列

[英]R - subtracting multiple columns from multiple columns with 2 data frames

I have two dataframes as below: 我有两个数据框,如下所示:

> head(VN.GRACE.Int, 4)
 DecimDate        CSR         GFZ        JPL
1  2003.000 12.1465164  5.50259937 15.7402752
2  2003.083  1.8492431  0.27744418  3.4811423
3  2003.167  1.5168512 -0.06333961  1.7962201
4  2003.250 -0.2355813  6.16296554  0.7215013

> head(VN.GLDAS, 4)
   Decim_Date NOAH_SManom CLM_SManom VIC_SManom SM_Month_Mean
1   2003.000   3.0596372  0.4023805 -0.2175665      1.081484
2   2003.083  -1.4459928 -1.0255955 -3.1338024     -1.868464
3   2003.167  -3.9945788 -1.4646734 -4.2052981     -3.221517
4   2003.250  -0.9737429  0.4213161 -1.0537822     -0.535403

EDIT: The names below (UN.GRACE.Int and UN.GLDAS) are the names of the two dataframes above. 编辑:下面的名称(UN.GRACE.Int和UN.GLDAS)是上面两个数据框的名称。 Have added an example of what the final data frame will look like. 添加了最终数据帧的样例。

I want to subtract columns [,2:5] in VN.GLDAS data frame from EACH of the columns [,2:4] in UN.GRACE.Int and put the results in a separate data frame (new data frame will have 12 columns) as below: 我想从UN.GRACE.Int的[[2:4]]列的EACH中减去VN.GLDAS数据帧中的[[2:5]列,然后将结果放在单独的数据帧中(新数据帧将具有12列)如下:

EXAMPLE <- data.frame(CSR_NOAH=numeric(), CSR_CLM=numeric(), CSR_VIC=numeric(), CSR_SM_Anom=numeric(),
       GFZ_NOAH=numeric(), GFZ_CLM=numeric(), GFZ_VIC=numeric(), GFZ_SM_Anom=numeric(),
       JPL_NOAH=numeric(), JPL_CLM=numeric(), JPL_VIC=numeric(), JPL_SM_Anom=numeric())

I've looked into 'sweep' as suggested in another post, but am not sure whether my query would be better suited using a for loop, which I'm a novice at. 我已经按照另一篇文章中的建议研究了“扫描”,但是不确定我的查询是否适合使用for循环(我是新手)。 Also looked at subtracting values in one data frame from another but doesn't answer my query I don't believe - Thanks in advance 还查看了从一个数据帧减去另一个数据帧中的值,但没有回答我不相信的查询-在此先感谢

 res <- cbind(VN.GRACE.Int[,1,drop=F],
   do.call(cbind,lapply(VN.GLDAS[,2:5], 
      function(x) VN.GRACE.Int[,2:4]-x)))

 dim(res)
 #[1]  4 13

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM