उत्तर: ifelse() को दिनांक को संख्यात्मक में बदलने से रोकें
बेस आर में ifelse() फ़ंक्शन डिफ़ॉल्ट रूप से दिनांक ऑब्जेक्ट को संख्यात्मक ऑब्जेक्ट में परिवर्तित करता है।
ऐसा होने से रोकने के लिए, आप विकल्प के रूप में निम्न विधियों में से किसी एक का उपयोग कर सकते हैं:
विधि 1: बेस आर में as.character() का उपयोग करें
df$date <- as. Date (ifelse(df$date < ' 2022-01-20 ', as. character (df$date+5), as. character (df$date)))
विधि 2: dplyr में if_else() का उपयोग करें
df$date <- if_else(df$date < ' 2022-01-20 ', df$date+5, df$date)
विधि 3: data.table में fifelse() का उपयोग करें
df$date <- fifelse(df$date < ' 2022-01-20 ', df$date+5, df$date)
निम्नलिखित उदाहरण दिखाते हैं कि आर में निम्नलिखित डेटा फ्रेम के साथ व्यवहार में प्रत्येक विधि का उपयोग कैसे करें:
#create data frame df <- data. frame (date=as. Date (c('2022-01-05', '2022-01-17', '2022-01-22', '2022-01-23', '2022-01-29', '2022-02-13')), sales=c(22, 35, 24, 20, 16, 19)) #view data frame df dirty date 1 2022-01-05 22 2 2022-01-17 35 3 2022-01-22 24 4 2022-01-23 20 5 2022-01-29 16 6 2022-02-13 19
उदाहरण 1: बेस आर में as.character() का उपयोग करें
निम्नलिखित कोड दिखाता है कि डेटा फ़्रेम के दिनांक कॉलम पर यदि अन्यथा कथन निष्पादित करने और परिणाम के रूप में दिनांक उत्पन्न करने के लिए आर बेस ifelse() फ़ंक्शन के साथ as.character() फ़ंक्शन का उपयोग कैसे करें:
#if date is before 2022-01-20 then add 5 days df$date <- as. Date (ifelse(df$date < ' 2022-01-20 ', as. character (df$date+5), as. character (df$date))) #view updated data frame df dirty dates 1 2022-01-10 22 2 2022-01-22 35 3 2022-01-22 24 4 2022-01-23 20 5 2022-01-29 16 6 2022-02-13 19
यदि दिनांक कॉलम में कोई मान 01/20/2022 से पहले था, तो हमने तिथि में पांच दिन जोड़े।
ध्यान दें कि दिनांक कॉलम ने संख्या प्रारूप में परिवर्तित होने के बजाय अपना दिनांक प्रारूप बरकरार रखा है।
उदाहरण 2: dplyr में if_else() का उपयोग करें
निम्नलिखित कोड दिखाता है कि डेटा फ़्रेम में दिनांक कॉलम पर यदि अन्यथा कथन निष्पादित करने और परिणाम के रूप में दिनांक उत्पन्न करने के लिए dplyr के if_else() फ़ंक्शन का उपयोग कैसे करें:
library (dplyr) #if date is before 2022-01-20 then add 5 days df$date <- if_else(df$date < ' 2022-01-20 ', df$date+5, df$date) #view updated data frame df dirty date 1 2022-01-10 22 2 2022-01-22 35 3 2022-01-22 24 4 2022-01-23 20 5 2022-01-29 16 6 2022-02-13 19
यदि दिनांक कॉलम में कोई मान 01/20/2022 से पहले था, तो हमने तिथि में पांच दिन जोड़े।
ध्यान दें कि दिनांक कॉलम ने संख्या प्रारूप में परिवर्तित होने के बजाय अपना दिनांक प्रारूप बरकरार रखा है।
उदाहरण 3: data.table में fifelse() का उपयोग करें
निम्नलिखित कोड दिखाता है कि डेटा फ़्रेम में दिनांक कॉलम पर यदि अन्यथा कथन निष्पादित करने और परिणाम के रूप में दिनांक उत्पन्न करने के लिए data.table के फ़िफ़ल्स () फ़ंक्शन का उपयोग कैसे करें:
library (data.table) #if date is before 2022-01-20 then add 5 days df$date <- fifelse(df$date < ' 2022-01-20 ', df$date+5, df$date) #view updated data frame df dirty dates 1 2022-01-10 22 2 2022-01-22 35 3 2022-01-22 24 4 2022-01-23 20 5 2022-01-29 16 6 2022-02-13 19
यदि दिनांक कॉलम में कोई मान 01/20/2022 से पहले था, तो हमने तिथि में पांच दिन जोड़े।
फिर, दिनांक कॉलम ने संख्या प्रारूप में परिवर्तित होने के बजाय अपना दिनांक प्रारूप बरकरार रखा।
ध्यान दें : अत्यधिक बड़े डेटा फ़्रेम के लिए, dplyr और data.table विधियाँ आधार R विधि से तेज़ होंगी।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य कार्य कैसे करें:
आर में नेस्टेड इफ एल्स स्टेटमेंट कैसे लिखें
आर में केस स्टेटमेंट कैसे लिखें
आर में डेटा फ़्रेम में एकाधिक कॉलम कैसे जोड़ें