2012-11-06 17 views
9

chcę uzyskać datę bieżącego miesiąca rozpocznie się R. Teraz używam następującychGetting data rozpoczęcia bieżącego miesiąca

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 

Czy istnieje prosty sposób to zrobić?

+0

Jeśli w systemie Linux, możesz użyć systemu ("date", intern = T), aby wyodrębnić informacje o dacie jako ciąg, a następnie dokonać edycji. –

Odpowiedz

22

Tak, jest tam jeden-liner do tego przy użyciu funkcji cut:

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

dziękuję za answer.it działa – Nandu

5

również jedna linia w formacie funkcja:

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

Ma to dodatkową zaletę, utrzymując go w formacie daty, w przeciwieństwie do konwersji do współczynnika przez "cut". –

+0

'klasa (format (Sys.Date()," 01-% m-% Y "))' wyniki jako '" znak "'. Ale 'class (cut (Sys.Date()," month "))' daje "współczynnik" '. Tak więc, nie podejść do tych podejść, aby zmienić datę aplikacji! – Prradep

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

Przydałoby się bardziej rozwinąć to rozwiązanie, wyjaśniając, jak i dlaczego to rozwiązuje zadawane pytanie, lub dlaczego jest ono lepsze/inne niż metoda opisana w pytaniu lub innych odpowiedziach. – sytech

0

Korzystanie lubridate (również pracować z sec, min, hour, mon, year itp.)

library(lubridate) 

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

dt 
# [1] "2018-01-01" 
Powiązane problemy