- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里关注了一些有关如何将字符向量转换为日期时间类的问题。我经常看到两种方法,strptime 和 as.POSIXct/as.POSIXlt 方法。我查看了这两个函数,但不清楚它们有什么区别。
function (x, format, tz = "")
{
y <- .Internal(strptime(as.character(x), format, tz))
names(y$year) <- names(x)
y
}
<bytecode: 0x045fcea8>
<environment: namespace:base>
function (x, tz = "", ...)
UseMethod("as.POSIXct")
<bytecode: 0x069efeb8>
<environment: namespace:base>
function (x, tz = "", ...)
UseMethod("as.POSIXlt")
<bytecode: 0x03ac029c>
<environment: namespace:base>
进行微基准测试以查看是否存在性能差异:
library(microbenchmark)
Dates <- sample(c(dates = format(seq(ISOdate(2010,1,1), by='day', length=365), format='%d-%m-%Y')), 5000, replace = TRUE)
df <- microbenchmark(strptime(Dates, "%d-%m-%Y"), as.POSIXlt(Dates, format = "%d-%m-%Y"), times = 1000)
Unit: milliseconds
expr min lq median uq max
1 as.POSIXlt(Dates, format = "%d-%m-%Y") 32.38596 33.81324 34.78487 35.52183 61.80171
2 strptime(Dates, "%d-%m-%Y") 31.73224 33.22964 34.20407 34.88167 52.12422
strptime 似乎稍微快一些。那么什么给出呢?为什么会有 2 个类似的功能,或者我错过了它们之间的差异?
最佳答案
嗯,这些函数做不同的事情。
首先,日期/时间有两个内部实现:POSIXct
,它存储自 UNIX 纪元以来的秒数(+一些其他数据),以及 POSIXlt
,存储日、月、年、时、分、秒等列表。
strptime
是一个将字符向量(多种格式)直接转换为 POSIXlt
的函数格式。
as.POSIXlt
将各种数据类型转换为POSIXlt
。它试图变得聪明并做明智的事情 - 就角色而言,它充当 strptime
的包装器。 .
as.POSIXct
将各种数据类型转换为POSIXct
。它还试图变得聪明并做明智的事情 - 就角色而言,它运行 strptime
首先,然后从 POSIXlt
进行转换至POSIXct
.
这是有道理的 strptime
更快,因为 strptime
仅处理字符输入,而其他方法则尝试根据输入类型确定使用哪种方法。它还应该更安全一些,因为收到意外数据只会给出错误,而不是尝试做可能不是您想要的智能事情。
关于r - 将字符向量转换为 POSIXct/POSIXlt 时 as.POSIXct/as.POSIXlt 和 strptime 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699511/
当 R 在此命令上抛出警告消息时 `setwd("~/Desktop/Project R") Warning message: In format.POSIXlt(as.POSIXlt(x), ...
大家好,我在将时间戳转换为 POSIXlt 时遇到问题,稍后需要从这个时间戳中提取 Year,month,dayofmoth,hour,min,sec 2015-12-01 00:04:39
我在这里关注了一些有关如何将字符向量转换为日期时间类的问题。我经常看到两种方法,strptime 和 as.POSIXct/as.POSIXlt 方法。我查看了这两个函数,但不清楚它们有什么区别。 s
在R中将unix时间戳转换为datetime对象时,为什么会看到差异? > as.POSIXlt(1268736919, origin="1970-01-01", tz="America/New_Yo
这个问题在这里已经有了答案: Why does unlist() kill dates in R? (2 个回答) 5年前关闭。 我有一个多级列表对象,其中所有元素都属于 POSIXlt 类: [[1
我正在创建一些随机数: data dataframe X1 X2 1 0.7981783 0.13233858 2 0.9592338 0.05512942 3 0
data.frame 的列之一是“字符” 例如:2012 年 3 月 31 日晚上 9:56:53 /> class(columnName) [1] "character" />ttable[,c(
我最近遇到了将 POSIXlt 日期对象与日期字符串进行比较的 R 代码。 as.POSIXlt.date("2007-02-02") >= "2007-02-01" [1] FALSE 结果,至少对
当我尝试在我的数据集中为“date”(class=POSIXlt 的变量)本地化时间时遇到错误。示例代码如下: # All dates are coded by survey software in
假设我有一个 POSIXct 对象的输入向量: times.input <- c( as.POSIXct('2013-01-01 00:00:00', tz='GMT'), as.POSIXc
非常基本,只是不明白 tz 论点是什么,如果不是因为这个...... dateIWantToConvert <- as.Date("2013-06-01") #the format of my sta
我有个问题。我下载了数据并将日期转换为 POSIXlt 格式 df% group_by(days) %>% summarise(sum=sum(value)) 我有一个错误: 错误:“transact
我试图使用 Posix 时间的 Sys.Date() 获取昨天的最后一分钟。 force_tz(as.POSIXlt(Sys.Date()-1), tz = 'America/New_York') +
假设我有以下数据 plt <- seq(as.POSIXlt("2010-01-01 01:20:30"), as.POSIXlt("2010-12-31 12:00:30"),
我有以下问题:我得到的数据中的日期列包含由于夏令时不存在的日期。 (例如2015-03-29 02:00在中欧时间不存在,因为DST在这一天生效,时钟直接设置为01:59到03:00) 是否有一种简单
这是一个奇怪的神器。我正在将数以万计的字符向量转换为日期时间类,如下所示: alles$DateTime=as.POSIXct(alles$roughdate, tz="EST",format="%Y
美好的一天 我在此处的一篇文章中读到“函数 Forecast::plot.forecast 并非设计用于与 axis.Date 或 axis.POSIXct (在包 Forecast 中不使用)一起使
我正在 R 中绘制一个情节(在一个情节中绘制三天的时间序列)。我有一个“POSIXlt”“POSIXt”向量,我只需要保留没有年、月、日的时间(小时、分钟……)。 "2004-09-08 13:50:
由 documentation of the class POSIXlt POSIXlt 类的对象是命名列表。 确实: > tm class(tm) [1] "POSIXlt" "POSIXt" >
我有一个函数可以从多个字符串输入创建时间戳: # Create timestamp from date, time, and timezone strings str_to_dt d dlist
我是一名优秀的程序员,十分优秀!