2014-07-23 88 views
0

我有如下2個dataframes:的R - 從多個列中減去多個列與2的數據幀

> 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()) 

我看着「掃」作爲在另一篇文章建議,但我不知道我的查詢是否會更適合使用for循環,我敢一個新手。又看了看subtracting values in one data frame from another但不回答我的詢問,我不相信 - 在此先感謝

+1

它將幫助,如果你provde所需的輸出 –

+0

@大衛Arenburg - 現在已編輯的問題,以反映您的疑問(希望) –

回答

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 
+0

輝煌 - 完美的作品。謝謝@akrun –

+0

輝煌是確切的詞做描述幾乎所有@akruns答案 –

+0

@大衛阿倫堡。過去我曾經見過類似的問題,所以這只是回憶以前使用的方法。說到輝煌,我不會想出像你這樣的解決方案,在http://stackoverflow.com/questions/24906346/if-function-in-r/24906550#24906550> – akrun