मेरे पास एक डेटा फ्रेम है जो इस तरह दिखता है:

Month           GSI
1993.01     -0.57567056
1993.02     -1.15549239
1993.03     -1.00353071
1993.04     -0.10698880
1993.05     -0.31903591
1993.06      0.30361638
1993.07      1.24528915
1993.08      0.85104370
1993.09      1.24680092
1993.10      1.42521406

जैसा कि आप देख सकते हैं, "माह" कॉलम "वर्ष.माह" प्रारूप में एक तारीख है। मैं इस कॉलम को पारंपरिक "%Y-%m" प्रारूप में पुन: स्वरूपित करना चाहता हूं ताकि डेटा फ्रेम कुछ इस तरह दिखे:

  Date          GSI
1993-01     -0.57567056
1993-02     -1.15549239
1993-03     -1.00353071
1993-04     -0.10698880
1993-05     -0.31903591
1993-06      0.30361638
1993-07      1.24528915
1993-08      0.85104370
1993-09      1.24680092
1993-10      1.42521406

दिनांक कॉलम के रूप में पहचाने जाने योग्य होने के लिए मैं इस कॉलम के प्रारूप को बदलने के बारे में कैसे जा सकता हूं? वर्तमान में, "माह" कॉलम का वर्ग संख्यात्मक है।

0
Jamie_B 25 अक्टूबर 2021, 23:03

2 जवाब

सबसे बढ़िया उत्तर

आप रेगुलर एक्सप्रेशन में समूहों को कैप्चर करने के साथ sub का उपयोग कर सकते हैं:

df$Month <- sub("^(\\d{4})\\.(\\d{2})$", "\\1-\\2", format(df$Month, 2))

df
#>      Month        GSI
#> 1  1993-01 -0.5756706
#> 2  1993-02 -1.1554924
#> 3  1993-03 -1.0035307
#> 4  1993-04 -0.1069888
#> 5  1993-05 -0.3190359
#> 6  1993-06  0.3036164
#> 7  1993-07  1.2452892
#> 8  1993-08  0.8510437
#> 9  1993-09  1.2468009
#> 10 1993-10  1.4252141

इनपुट डेटा

df <- structure(list(Month = c(1993.01, 1993.02, 1993.03, 1993.04, 
1993.05, 1993.06, 1993.07, 1993.08, 1993.09, 1993.1), GSI = c(-0.57567056, 
-1.15549239, -1.00353071, -0.1069888, -0.31903591, 0.30361638, 
1.24528915, 0.8510437, 1.24680092, 1.42521406)), class = "data.frame", row.names = c(NA, 
-10L))

df
#>      Month        GSI
#> 1  1993.01 -0.5756706
#> 2  1993.02 -1.1554924
#> 3  1993.03 -1.0035307
#> 4  1993.04 -0.1069888
#> 5  1993.05 -0.3190359
#> 6  1993.06  0.3036164
#> 7  1993.07  1.2452892
#> 8  1993.08  0.8510437
#> 9  1993.09  1.2468009
#> 10 1993.10  1.4252141
1
Allan Cameron 25 अक्टूबर 2021, 23:22
यह पूरी तरह से काम किया, बहुत बहुत धन्यवाद!
 – 
Jamie_B
25 अक्टूबर 2021, 23:21

lubridate पैकेज का उपयोग करें।

library(dplyr)
library(lubridate)
df <- transmute(df, date = ym(Month))

# if you don't know dplyr, use:
df$date <- ym(df$Month)

ध्यान दें कि यह समाधान परिणाम को POSIXct (दिनांक) स्वरूपित चर में भी बाध्य करता है। ट्रांसम्यूट उत्परिवर्तित और हटाता है और महीना चर।

lubridate आर में दिनांक (और समय) डेटा के साथ काम करने के लिए स्वर्ण मानक पैकेज है। चीटशीट खोजें यहां.

1
bash1000 25 अक्टूबर 2021, 23:22