在列滯後值I具有很多列的TS數據集替換單個值。對於每一列,我想用相同的值加上一個非常小的項(任何類型的噪音)來代替等於它們滯後的值,假設是標準偏差的一小部分。 我寫了這個函數,並使用了簡單的應用函數。根據中的R
a <- c(1,2,2,3,4,5,6)
b <- c(4,5,6,7,8,8,9)
data <- data.frame(cbind(a,b))
repetitions <- function(x) {
x[x == lag(x) & !is.na(x) & !is.na(lag(x))] <- x+0.000001
x
}
datanew <- data.frame(apply(data, 2, repetitions))
如果我使用單個數字,它可以工作,例如, 1000,而如果我把x + 0.000001它返回錯誤的數字。 我知道解決的辦法是不是很困難,但我只發現了NA的問題,我在這一點上的程序相當stucked。
非常感謝您的幫助。
編輯。我希望兆瓦是正確的,我的這個
請出示重複的例子 – akrun
呀,可重複的例子會有所幫助。它看起來像你的代碼中的'x'是一個向量,'x'和'x [x == lag(x)&!is.na(x)&!is.na(lag(x))]'會不是相同的長度,所以這會造成錯誤。 – cerpintaxt
@cerpintaxt我想你明白了。我的目標是簡單地用x(值)+ 0.00001 * sd(x)代替,其中x是apply函數中使用的向量 – Mino