有時我想對數據集執行功能(例如,差計算),並在該數據幀的結果直接存儲存儲在同一data.frame的輸出時輸出的行大小不同
df <- data.frame(a$C, diff(a$C))
但我不能這樣做,因爲行數是不同的。
是否有一些語法可以讓我做到這一點,也許有NA
當函數(diff()
)沒有給出結果?
有時我想對數據集執行功能(例如,差計算),並在該數據幀的結果直接存儲存儲在同一data.frame的輸出時輸出的行大小不同
df <- data.frame(a$C, diff(a$C))
但我不能這樣做,因爲行數是不同的。
是否有一些語法可以讓我做到這一點,也許有NA
當函數(diff()
)沒有給出結果?
沒有這個一般的解決方案,而使得對整個遼闊的假設功能之一可能希望使用。
爲您展示,我們可以很容易地計算出,從diff()
的第一個值將是一個NA
如果它返回它的例子:如果你正在使用diff()
那麼你可以永遠只是做
set.seed(5)
d <- rpois(10, 5)
> d
[1] 3 6 8 4 2 6 5 7 9 2
> diff(d)
[1] 3 2 -4 -2 4 -1 2 2 -7
所以:
> dd <- data.frame(d, Diff = c(NA, diff(d)))
> dd
d Diff
1 3 NA
2 6 3
3 8 2
4 4 -4
5 2 -2
6 6 4
7 5 -1
8 7 2
9 9 2
10 2 -7
但現在考慮你將與你可能希望使用不總是在正確的位置返回NA
任何其他功能做什麼。
對於這個例子,我們可以使用動物園包,其具有na.pad
參數:如果正在使用帶式接口建模函數
require(zoo)
d2 <- as.zoo(d)
ddd <- data.frame(d, Diff = diff(d2, na.pad = TRUE))
> ddd
d Diff
1 3 NA
2 6 3
3 8 2
4 4 -4
5 2 -2
6 6 4
7 5 -1
8 7 2
9 9 2
10 2 -7
(例如lm()
)和該函數具有na.action
參數,則可以在函數調用中設置na.action = na.exclude
,並且提取器函數(如fitted()
,resid()
等)將在正確的位置加回到它們的輸出NA
,以便輸出與傳遞給建模函數的數據具有相同的長度。
如果您還有其他更具體的案例想要探索,請編輯您的答案。在特定情況下,通常會有一個簡單的答案給你的問題。在一般情況下,答案是否定的,不可能做你想問的問題。
的標準方法是創建照你這麼說的一端延伸或其他與NA的向量
dfrm$diffvec <- c(NA, diff(firstvec))
非常感謝卓越的動物園解決方案。 – 2012-07-05 13:08:01