0
我想創建一個函數來適用於一個數據框中的變量,對於從當前觀察前進2天的窗口,更改VarD的值,如果在該日期窗口中它始終以價值1Ifelse語句與數據框子集使用日期
數據框看起來是這樣的:
VarA VarB Date Diff VarD
1 1 2007-04-09 NA 0
1 1 2007-04-10 0 0
1 1 2007-04-11 -2 1
1 1 2007-04-12 0 1
1 1 2007-04-13 2 0
1 1 2007-04-14 0 0
1 1 2007-04-15 -2 1
1 1 2007-04-16 1 0
1 1 2007-04-17 -4 1
1 1 2007-04-18 0 1
1 1 2007-04-19 0 1
1 1 2007-04-20 0 1
新的數據框看起來應該像下面這樣:
VarA VarB Date Diff VarD VarC
1 1 2007-04-09 NA 0 0
1 1 2007-04-10 0 0 0
1 1 2007-04-11 -2 1 1
1 1 2007-04-12 0 1 1
1 1 2007-04-13 2 0 0
1 1 2007-04-14 0 0 0
1 1 2007-04-15 -2 1 1
1 1 2007-04-16 1 0 0
1 1 2007-04-17 -4 1 0
1 1 2007-04-18 0 1 0
1 1 2007-04-19 0 1 0
1 1 2007-04-20 0 1 0
我曾竭力試圖使他下面的代碼:
db$VarC <- 0
for (i in unique(db$VarA)) {
for (j in unique(db$VarB)) {
for (n in 1 : lenght(db$Date)) {
if (db$VarD[n] == 0) {db$VarC[n] <- 0}
else { db$VarC[n] <- ifelse(0 %in% db[(db$Date >=n & db$Date < n+3,]$VarC, 1,0}
}
}
但我在varC中只獲得零。我檢查了沒有其他的代碼,它工作正常。如果完整的代碼運行,則不會發生錯誤。我不知道問題出在哪裏。
感謝G.它完美。我也嘗試使用不同的VarA,並且如果缺少日期,並且也有效。最後一個問題:VarC函數中的x [-1]是什麼意思?再次感謝。 –
'x [-1]'是'x',除了它的第一個元素。試試'x < - c(11,24,100); X [-1]' –