मेरे पास तापमान के दैनिक अवलोकन के साथ समय श्रृंखला डेटा का डेटाफ्रेम है। मुझे एक डमी वैरिएबल बनाने की ज़रूरत है जो प्रत्येक दिन मायने रखती है जिसमें तापमान 5 सी की सीमा से ऊपर है। यह अपने आप में आसान होगा, लेकिन एक अतिरिक्त स्थिति मौजूद है: गिनती केवल थ्रेसहोल्ड के ऊपर लगातार दस दिनों के बाद शुरू होती है। यहाँ एक उदाहरण dataframe है:आर में एक सशर्त डमी कैसे बनाएं?
df <- data.frame(date = seq(365),
temp = -30 + 0.65*seq(365) - 0.0018*seq(365)^2 + rnorm(365))
मुझे लगता है मैं यह किया गया था, लेकिन मेरी पसंद के लिए भी कई छोरों के साथ। मैंने यही किया:
df$dummyUnconditional <- 0
df$dummyHead <- 0
df$dummyTail <- 0
for(i in 1:nrow(df)){
if(df$temp[i] > 5){
df$dummyUnconditional[i] <- 1
}
}
for(i in 1:(nrow(df)-9)){
if(sum(df$dummyUnconditional[i:(i+9)]) == 10){
df$dummyHead[i] <- 1
}
}
for(i in 9:nrow(df)){
if(sum(df$dummyUnconditional[(i-9):i]) == 10){
df$dummyTail[i] <- 1
}
}
df$dummyConditional <- ifelse(df$dummyHead == 1 | df$dummyTail == 1, 1, 0)
क्या कोई ऐसा करने के लिए आसान तरीके सुझा सकता है?
अन्य दो सुझाव भी काम है, लेकिन यह सबसे सरल था और मैं किसी भी तरह अगर इस तरह से मौजूद है आर आधार समाधान का उपयोग करने के लिए इच्छुक हूँ। धन्यवाद! – Antti
आप इस समाधान की बारीकी से जांच कर सकते हैं। मुझे 67-75 दिनों में डमी मूल्य = 1 मिला, इस तथ्य के बावजूद कि ये दिन लगातार 10 दिन की दौड़ के 5 डिग्री temps – JHowIX
@JHowIX का हिस्सा नहीं हैं, क्या आप इसका उदाहरण दे सकते हैं? ध्यान दें कि नमूना डेटा बीज सेट किए बिना 'rnorm' का उपयोग करता है, इसलिए समाधान आवश्यक नहीं होते हैं (चूंकि नमूना डेटा भिन्न हो सकता है) –