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

时间:2014-07-23 10:42:02

标签: r dataframe

我有两个数据框如下:

> 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

编辑:以下名称(UN.GRACE.Int和UN.GLDAS)是上述两个数据帧的名称。添加了最终数据框架的示例。

我想从UN.GRACE.Int中的每个列[,2:4]中的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())

我已经调查过&#39;扫描&#39;正如另一篇文章中所建议的,但我不确定我的查询是否更适合使用for循环,我是新手。还看了subtracting values in one data frame from another,但没有回答我的问题,我不相信 - 提前致谢

1 个答案:

答案 0 :(得分:2)

 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