润滑示例 ymd(090101, 90102)
Lubridate example ymd(090101, 90102)
我对 R 和一般编程还很陌生,有一个问题。答案可能就在我眼前,但我没有看到。
在 lubridate 包中,ymd()
的示例之一是:
ymd(090101, 90102)
被解析为“2009-01-01
”“2009-01-02
”
我的问题 - 如果“90102
”中缺失的第六位与日期而不是年份相关怎么办?也就是说,预定日期是 1990-01-02
?我至少可以看到这可能发生的一种方式:某人(我,一年前试图为 Solr 设置日期格式,这让我使用电子表格将日期分为年、月和日列,并在所有地方添加 Ts 和 Zs)- 和前导零在某些时候被截断。 (OS X 上的数字经常自动格式化)
另外,在 data.table::fread 中可能会发生类似的事情,其中有一列 90 年代的日期,格式为 yymmdd
,后跟一系列从 2000 年到 2009 年的日期,它会自动检测整数优先。不确定。如果 fread()
自动检测整数,那将是另一种方式。
这对我来说不是问题 - 正在阅读试图解决另一个日期问题的文档,这个例子让我想知道为什么。
The answer is probably staring me in the face
有日期?不,如果您对日期处理感到困惑,您可能正在注意。日期处理是一项非常混乱的工作(即使不涉及计算机),日期处理软件也简单地反映了这一点。
关于您的问题:parse_date_time()
及其 orders
参数是在 R 中处理此问题的最简单方法。您描述的场景实际上已迎合。查看帮助页面,向下滚动到我在 "orders" 参数中输入的奇怪符号。
require(lubridate)
datestr <- c("090101", "90102")
parsed <- parse_date_time(datestr, orders=c("ymd"))
parsed_date <- as.Date(parsed)
[1] "2009-01-01" "1990-10-02"
另一方面,如果您的问题是 90102 有时表示“2009-01-02”,有时表示“1990-01-02”,但这取决于您使用哪种方法处理数据:您必须告诉软件哪种情况是哪种情况,就像您告诉人类一样。 :)
我对 R 和一般编程还很陌生,有一个问题。答案可能就在我眼前,但我没有看到。
在 lubridate 包中,ymd()
的示例之一是:
ymd(090101, 90102)
被解析为“2009-01-01
”“2009-01-02
”
我的问题 - 如果“90102
”中缺失的第六位与日期而不是年份相关怎么办?也就是说,预定日期是 1990-01-02
?我至少可以看到这可能发生的一种方式:某人(我,一年前试图为 Solr 设置日期格式,这让我使用电子表格将日期分为年、月和日列,并在所有地方添加 Ts 和 Zs)- 和前导零在某些时候被截断。 (OS X 上的数字经常自动格式化)
另外,在 data.table::fread 中可能会发生类似的事情,其中有一列 90 年代的日期,格式为 yymmdd
,后跟一系列从 2000 年到 2009 年的日期,它会自动检测整数优先。不确定。如果 fread()
自动检测整数,那将是另一种方式。
这对我来说不是问题 - 正在阅读试图解决另一个日期问题的文档,这个例子让我想知道为什么。
The answer is probably staring me in the face
有日期?不,如果您对日期处理感到困惑,您可能正在注意。日期处理是一项非常混乱的工作(即使不涉及计算机),日期处理软件也简单地反映了这一点。
关于您的问题:parse_date_time()
及其 orders
参数是在 R 中处理此问题的最简单方法。您描述的场景实际上已迎合。查看帮助页面,向下滚动到我在 "orders" 参数中输入的奇怪符号。
require(lubridate)
datestr <- c("090101", "90102")
parsed <- parse_date_time(datestr, orders=c("ymd"))
parsed_date <- as.Date(parsed)
[1] "2009-01-01" "1990-10-02"
另一方面,如果您的问题是 90102 有时表示“2009-01-02”,有时表示“1990-01-02”,但这取决于您使用哪种方法处理数据:您必须告诉软件哪种情况是哪种情况,就像您告诉人类一样。 :)