2012-11-06 55 views
9

我想要得到的起始日期開始當月的日期R. 現在我用下面獲得當月

currentDate<-Sys.Date() #for getting current system date eg:2012-11-06 
formatDate<-format(currentDate,"%Y-%m") #it return 2012-11 
startDate<-as.Date(paste(formatDate,"-01",sep="")) #it return 2012-11-01 

有沒有簡單的方法來做到這一點?

+0

如果在Linux中,您可以使用system(「date」,intern = T)將日期信息提取爲字符串,然後對其進行編輯。 –

回答

22

是的,有一個班輪爲使用功能cut

cut(Sys.Date(), "month") 
[1] 2012-11-01 
Levels: 2012-11-01 
+0

謝謝你的答案。它的作品 – Nandu

5

而且一條線使用的格式功能:

format(Sys.Date(),"01-%m-%Y") 
[1] "01-06-2017" 
+0

這有一個額外的好處,保持在一個日期格式,而不是通過'cut'將其轉換爲一個因子。 –

+0

'class(format(Sys.Date(),「01-%m-%Y」))'result as'「character」'。但是'class(cut(Sys.Date(),「month」))'產生''factor「'。所以,這些方法需要日期轉換apporach! – Prradep

0
as.Date(gsub(" ","",paste(format(Sys.Date(),"%Y-%m"),"-01"))) 
+0

對此解決方案進行更詳細的闡述是非常有用的,它解釋瞭如何或爲何解決被問到的問題,或者爲什麼它與問題或其他答案中描述的方法更好/不同。 – sytech

0

使用lubridate(也sec工作, min,hour,mon,year等)

library(lubridate) 

dt <- Sys.Date() 
day(dt) <- 01 

dt 
# [1] "2018-01-01"