2012-12-17 14 views
19

मुझे समझ में नहीं आता कि आर में कार्य diff() क्या है। इस उदाहरण देखें:आर में diff() फ़ंक्शन क्या करता है?

[1] -9 0 0 0 0 0 1 -1 0 0 0 0 0 0 2 7 

इस समारोह की परिभाषा क्या है:

temp = c(10,1,1,1,1,1,1,2,1,1,1,1,1,1,1,3,10) 
diff(temp) 

ऊपर कोड निम्न उत्पादन उत्पादन होता है?

+0

हाँ, लेकिन मैं इसे पीछे की अवधारणा undderstand नहीं कर सकते। –

+0

आवेदन क्या है, और परिणामों की गणना कैसे की जाती है? –

उत्तर

48

फ़ंक्शन वेक्टर के सभी लगातार मानों के बीच अंतर की गणना करता है। अपने उदाहरण वेक्टर के लिए, अंतर हैं:

1 - 10 = -9 
1 - 1 = 0 
1 - 1 = 0 
. 
. 
. 
3 - 1 = 2 
10 - 3 = 7 

तर्क differences आप मतभेदों के आदेश निर्दिष्ट करने के लिए अनुमति देता है।

जैसे, आदेश

diff(temp, differences = 2) 
[1] 9 0 0 0 0 1 -2 1 0 0 0 0 0 2 5 

, इसलिए के रूप में

diff(diff(temp)) 
[1] 9 0 0 0 0 1 -2 1 0 0 0 0 0 2 5 

ही परिणाम पैदा करता है यह मतभेद की मतभेद देता है।


तर्क lag आपको अंतराल निर्दिष्ट करने की अनुमति देता है।

उदाहरण के लिए, यदि lag = 2, चौथा और दूसरा मान, चौथा और दूसरा मान के बीच अंतर, पांचवें और तीसरे मूल्य आदि के बीच अंतर की गणना की जाती है।

diff(temp, lag = 2) 
[1] -9 0 0 0 0 1 0 -1 0 0 0 0 0 2 9 
+0

"मतभेद" तर्क क्या करता है? –

+0

@ user1885733 मेरे उत्तर का अद्यतन देखें। –

+0

@ user1885733 अगर आप 'diff (x) 'तर्कों के बिना' lag' और 'मतभेद' के बिना कॉल करते हैं, तो डिफ़ॉल्ट मान (यानी, 1) का उपयोग किया जाएगा। यह 'diff (x, lag = 1, diffe = 1) 'जैसा ही है। –

16

यह लगातार तत्वों के जोड़े के बीच अंतर की गणना करता है।

मान लें कि temp कुछ चर के अवलोकन हैं, उदाहरण के लिए तापमान पर रीडिंग घंटे लगते हैं। फिर diff(temp) आपको बताएगा कि हर घंटे के दौरान तापमान कितना बदल गया है।

diff() के विपरीत cumsum() (संचयी योग) है:

> temp 
[1] 10 1 1 1 1 1 1 2 1 1 1 1 1 1 1 3 10 
> cumsum(c(10, diff(temp))) 
[1] 10 1 1 1 1 1 1 2 1 1 1 1 1 1 1 3 10 
संबंधित मुद्दे