小编sun*_*unt的帖子

如何在保持其R类的同时从POSIXlt时间加/减时间?

我正在操作一些POSIXltDateTime对象.例如,我想添加一个小时:

my.lt = as.POSIXlt("2010-01-09 22:00:00")
new.lt = my.lt + 3600
new.lt
# [1] "2010-01-09 23:00:00 EST"
class(new.lt)
# [1] "POSIXct" "POSIXt" 
Run Code Online (Sandbox Code Playgroud)

事情是我想new.lt成为一个POSIXlt对象.我知道我可以用as.POSIXlt它来转换回来POSIXlt,但有没有更优雅和有效的方法来实现这一目标?

time r date posixct

16
推荐指数
4
解决办法
4万
查看次数

在R中调用strptime时毫秒难题

options(digits.secs = 3);

> strptime("2007-03-30 15:00:00.007", format = "%Y-%m-%d %H:%M:%OS");
[1] "2007-03-30 15:00:00.007"
> strptime("2007-03-30 15:00:00.008", format = "%Y-%m-%d %H:%M:%OS");
[1] "2007-03-30 15:00:00.008"
> strptime("2007-03-30 15:00:00.009", format = "%Y-%m-%d %H:%M:%OS");
[1] "2007-03-30 15:00:00.008"
> strptime("2007-03-30 15:00:00.010", format = "%Y-%m-%d %H:%M:%OS");
[1] "2007-03-30 15:00:00.01"
> strptime("2007-03-30 15:00:00.011", format = "%Y-%m-%d %H:%M:%OS");
[1] "2007-03-30 15:00:00.010"
> strptime("2007-03-30 15:00:00.999", format = "%Y-%m-%d %H:%M:%OS");
[1] "2007-03-30 15:00:00.998"
Run Code Online (Sandbox Code Playgroud)

我很困惑,为什么与"009"有一毫秒的差异,然后再从"011"那里得到.

r strptime

6
推荐指数
1
解决办法
5525
查看次数

R中的日期时间转换

我知道类似的事情已经讨论过但是这里有一些我还没有找到答案的东西.

1:日期到POSIXct

> Sys.timezone()
[1] "EST"

> as.POSIXct("2011-01-30")
[1] "2011-01-30 EST"

> as.POSIXct(as.Date("2011-01-30"))
[1] "2011-01-29 19:00:00 EST"

> as.POSIXct(as.Date("2011-01-30"), tz="EST")
[1] "2011-01-29 19:00:00 EST"

> as.POSIXct(as.Date("2011-01-30"), tz="GMT")
[1] "2011-01-29 19:00:00 EST"

> as.POSIXct(as.Date("2011-01-30"), tz="America/New_York")
[1] "2011-01-29 19:00:00 EST"

> as.POSIXct(as.Date("2011-01-30"), tz="")
[1] "2011-01-29 19:00:00 EST"
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么,如果输入是日期,即使我指定了正确的时区,我也无法在1月30日午夜到达?如果输入是字符串,那么我没关系.

2:日期/字符转换.

两者都非常缓慢.然后我发现要将字符串转换为Date,实际上通过首先将其转换为POSIXlt要快得多:

> d3.str = "2011-03-02 23:59:00";
> N=10000
> system.time(for(i in 1:N) r5.dt = as.Date(d3.str))
   user  system elapsed 
   1.25    0.00    1.24 
> system.time(for(i in 1:N) r6.dt = as.Date(strptime(d3.str, format="%Y-%m-%d")))
   user  system elapsed 
   0.37 …
Run Code Online (Sandbox Code Playgroud)

time r date

3
推荐指数
1
解决办法
1万
查看次数

difftime的结果不一致

> time1 = strptime("2010-03-01 00:15:00", format = "%Y-%m-%d %H:%M:%S")
> time2a = strptime("2010-03-01", format = "%Y-%m-%d")
> time2b = as.Date(time2a)
> difftime(time1, time2a)
Time difference of 15 mins
> difftime(time1, time2b)
Time difference of 5.25 hours
Run Code Online (Sandbox Code Playgroud)

在difftime的帮助页面中,接受日期对象(time2b).为什么结果错了(5.25小时)?

谢谢.

datetime r date

2
推荐指数
1
解决办法
803
查看次数

R:数据帧中的数据时间对象

> my.lt <- strptime("2003-02-05 03:00:02", format="%Y-%m-%d %H:%M:%S")
> x <- data.frame(d=my.lt)
> class(x$d)
[1] "POSIXct" "POSIXt" 
Run Code Online (Sandbox Code Playgroud)

我不知道为什么data.frame将x $ d从POSIXlt对象更改为POSIXct对象.现在,如果我这样做

> x$d = my.lt
Run Code Online (Sandbox Code Playgroud)

然后我得到了我想要的东西,但这很难看.任何人都可以告诉我1)为什么会这样; 2)如何初始化一个数据框,其中一列是一个整齐的POSIXlt.

谢谢.

datetime r dataframe

1
推荐指数
1
解决办法
2237
查看次数

标签 统计

r ×5

date ×3

datetime ×2

time ×2

dataframe ×1

posixct ×1

strptime ×1