2012-12-17 24 views
19

Tôi không hiểu chức năng diff() trong R là gì. Xem ví dụ sau:Hàm diff() trong R làm gì?

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

Đoạn mã trên sẽ cho kết quả như sau:

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

định nghĩa của chức năng này là gì?

+0

Có, nhưng tôi không thể undderstand khái niệm đằng sau nó. –

+0

Ứng dụng là gì và cách tính kết quả? –

Trả lời

48

Hàm này tính toán sự khác biệt giữa tất cả các giá trị liên tiếp của vectơ. Đối với vector ví dụ của bạn, sự khác biệt là:

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

Đối số differences phép bạn chỉ định thứ tự của sự khác biệt.

Ví dụ: lệnh

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

tạo ra kết quả tương tự như

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

Do đó, nó sẽ trả về những khác biệt của sự khác biệt.


Đối số lag cho phép bạn chỉ định độ trễ.

Ví dụ: nếu lag = 2, sự khác biệt giữa giá trị thứ ba và giá trị thứ nhất, giữa giá trị thứ tư và thứ hai, giữa giá trị thứ năm và thứ ba v.v.

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

Đối số "khác biệt" làm gì? –

+0

@ user1885733 Xem cập nhật câu trả lời của tôi. –

+0

@ user1885733 Nếu bạn gọi 'diff (x)' không có đối số 'lag' và' difference', các giá trị mặc định (tức là, 1) sẽ được sử dụng. Điều này giống với 'diff (x, lag = 1, difference = 1)'. –

16

Nó tính toán sự khác biệt giữa các cặp phần tử liên tiếp.

Giả sử temp là các quan sát của một số biến, ví dụ: đọc nhiệt độ được thực hiện trên giờ. Sau đó, diff(temp) sẽ cho bạn biết nhiệt độ đã thay đổi như thế nào trong mỗi giờ.

Điều ngược lại của diff()cumsum() (tích lũy tổng hợp):

> 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 
Các vấn đề liên quan