2013-11-26 4 views
5

मैं अपने डेटा को विभिन्न दिनांक प्रारूप में बदलने की कोशिश कर रहा हूं।आर में वर्ष के दिन yyyy-mm-dd को परिवर्तित करने के लिए कैसे?

, उदा 2010-12-31 2,010,365 को

से मैं नीचे दिए गए कोड की कोशिश की लेकिन यह मुझे कुछ अलग (उदाहरण, 359 360 361 362 363 364 365) दे दी है। मैं 2010.

dayofyear <- strptime(date, format="%Y-%m-%d")$yday + 1 

सकता है किसी को मदद कृपया करने के लिए वर्ष 2000 से अपने डेटा है?

बहुत धन्यवाद।

+0

opss ... yup। इसके लिए क्षमा चाहते हैं। – Sofea

उत्तर

5
d <- as.POSIXlt("2010-12-31", format="%Y-%m-%d") 
d$yday + 1 
# 365 
paste0(1900 + d$year, d$yday + 1) 
# 2010365 

अपडेट: पाठ फ़ाइल से पढ़ने के लिए:

t <- read.table(file = "file.txt", header = TRUE, sep = ";", dec = ",") 
    # make settings according to file format 

तो आप ग t$column_name या t[,column_number] द्वारा कॉलम मान तक पहुंच, और आप इन अभिव्यक्तियों में से एक द्वारा "2010-12-31" को प्रतिस्थापित करते हैं और यही वह है।

+0

धन्यवाद @ टोमास। कोड में txt फ़ाइल को कॉल करने का तरीका जानने का प्रयास करना क्योंकि 2000-01-01 से 2010-12-31 की सभी तिथियां एक txt फ़ाइल प्रपत्र में हैं। वैसे, 2010-12-31 2010365 होना चाहिए। :) – Sofea

+0

POSIXlt मानक 1 आधारित के बजाय 0 आधारित अनुक्रमण है, इसलिए 2010-01-01 वर्ष का 0 वां दिन है। – Justin

+0

@ टेक्स्ट फ़ाइल से सोफे पढ़ने बहुत आसान है, मेरे उत्तर – TMS

5
library(lubridate) 
date <- ymd("2010-12-31") 
paste0(year(date), yday(date)) 
# [1] "2010365" 
+0

आपको बहुत धन्यवाद @ हेनरिक। – Sofea

+0

मदद करने में खुशी हुई! चीयर्स। – Henrik

+5

नई लाइब्रेरी इंस्टॉल किए बिना यह संभव है, मेरा जवाब देखें। – TMS

16

आधार आर में:

format(as.Date('2010-12-31'), format='%Y%j') 

या:

strftime('2010-12-31', format='%Y%j') 
संबंधित मुद्दे