R:为什么“%b.%Y”日期类不是“日期”?

R:为什么“%b.%Y”日期类不是“日期”?,r,date,R,Date,有时我处理的数据如下: sep-2018 Sys.Date() [1] "2018-09-21" 从这样的日期开始: sep-2018 Sys.Date() [1] "2018-09-21" 为了获得此结果,我通常使用: format(Sys.Date(),'%b-%Y') 但它的类别不是日期: class(format(Sys.Date(),'%b-%Y')) [1] "character" 为什么不是约会?是否可以使用class=date,以及如何使用 另外,像zoo这样的外部

有时我处理的数据如下:

sep-2018
Sys.Date()
[1] "2018-09-21"
从这样的日期开始:

sep-2018
Sys.Date()
[1] "2018-09-21"
为了获得此结果,我通常使用:

format(Sys.Date(),'%b-%Y')
但它的类别不是日期:

 class(format(Sys.Date(),'%b-%Y'))
[1] "character"
为什么不是约会?是否可以使用class=date,以及如何使用

另外,像zoo这样的外部图书馆也有同样的功能

library(zoo)
> class(format(as.yearmon(format(Sys.Date()), "%Y-%m-%d"), "%b.%Y"))
[1] "character"

另外,使用%m.%Y似乎会生成相同的内容,但它不会创建例如订购问题。

format命令根据您提供的格式获取日期并输出可打印字符串。要引用文档,请执行以下操作:

An object of similar structure to x containing character representations of the 
elements of the first argument x in a common format, and in the current 
locale's encoding.
此外,日期变量在内部以数字类型的形式存储自1970-01-01以来的天数

dput(Sys.Date())
#structure(17795, class = "Date")

structure(0, class = "Date")
#[1] "1970-01-01"

因此,要精确定位日期,您需要day、month和year字段。如果这三个都没有,它可能会返回NA或错误。时间课也是如此。如果没有数据,则可以使用一些伪值,并使用format仅打印所需的字段。

format命令根据您提供的格式获取日期并输出可打印字符串。要引用文档,请执行以下操作:

An object of similar structure to x containing character representations of the 
elements of the first argument x in a common format, and in the current 
locale's encoding.
此外,日期变量在内部以数字类型的形式存储自1970-01-01以来的天数

dput(Sys.Date())
#structure(17795, class = "Date")

structure(0, class = "Date")
#[1] "1970-01-01"
因此,要精确定位日期,您需要day、month和year字段。如果这三个都没有,它可能会返回NA或错误。时间课也是如此。如果没有数据,则可以使用一些伪值,并使用format仅打印所需的字段。

正如Rohit所说,format不输出日期对象,而是以您选择的格式输出字符串

要从sep-2018这样的字符串中获取日期对象,可以使用readr::parse_Date

正如Rohit所说,format不会输出日期对象,而是以您选择的格式输出字符串

要从sep-2018这样的字符串中获取日期对象,可以使用readr::parse_Date


我不认为像2018年9月这样的字符串可以有上课日期。我不认为像2018年9月这样的字符串可以有上课日期。这解释了很多,所以在你看来,根本不可能有上课日期。lubridate软件包应该非常擅长这样的东西。我不确定,因为我自己从来都不需要它。这解释了很多,所以在你看来,根本不可能把它作为上课日期?lubridate包应该很擅长这样的东西。我不确定,因为我自己从来都不需要它。很好,但我不想转换为课堂日期并得到结果“[1]2018-09-01”,而是原始字符串。很好,但我不想转换为课堂日期并得到结果“[1]2018-09-01”,而是原始字符串。