R 将日期中的月份日期更改为第一天(01)

R 将日期中的月份日期更改为第一天(01),r,date,datetime,R,Date,Datetime,我想将日期中的月日设置为当前月份的开始日期(01)。 现在我使用以下方法: 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 = "")) # 2012-11

我想将
日期中的月日设置为当前月份的开始日期(
01
)。 现在我使用以下方法:

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 = ""))
# 2012-11-01 

currentDate是的,使用函数
cut
时有一个线性:

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

还有一行使用格式功能:

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

使用
lubridate
(也可使用
sec
min
hour
mon
year
等)

库(lubridate)

dt
lubridate
floor\u date
将其保留为日期

library(lubridate)

floor_date(Sys.Date(), "month")

如果在Linux中,您可以使用system(“date”,intern=T)将日期信息提取为字符串,然后对其进行编辑。这样做的另一个好处是将其保留为日期格式,而不是通过
cut
类(格式(Sys.date(),“01-%m-%Y”)
将其转换为系数(格式为Sys.date(),“01-%m-%Y”)
结果为
“character”
。但是
类(cut(Sys.Date(),“month”)
会产生
“factor”
。因此,这两种方法都需要注明转换日期!更详细地阐述此解决方案,解释此解决方案如何或为什么解决所问问题,或者为什么它比问题或其他答案中描述的方法更好/不同,这将非常有用。
library(lubridate)

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

dt
# [1] "2018-01-01"
library(lubridate)

floor_date(Sys.Date(), "month")