标签: posixct

R/POSIX控制结果格式(秒,分钟,小时)

我正在使用POSIXctR中的一些对象,并且想知道如何控制答案的格式.

train$targetVar1 <- as.numeric(as.POSIXct(as.character(string1),tz="UTC") - as.POSIXct(as.character(string2),tz="UTC"))
Run Code Online (Sandbox Code Playgroud)

答案似乎弹出sec,minhr数据没有明显的关系.

我看着使用POSIXlt帮助文件使它听起来像lt对象为每个时间尺度创建一个向量,但无法弄清楚如何使用各种方法访问向量,如:

> posixObj1 <- as.POSIXlt("2012-12-12 12:00:00")
> posixObj1$sec
[1] 0
> posixObj1$min
[1] 0
> posixObj1$hour
[1] 12

> x <- as.POSIXlt("2012-12-12")
> x
[1] "2012-12-12"
> format(x, "%s")
[1] ""
Run Code Online (Sandbox Code Playgroud)

有什么建议?

注意:我在Windows 7机器上运行R 2.15.1.

datetime r posixct

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

R中更快的日期格式?

我经常需要将(长)字符串转换为 R 中的日期类。我注意到这一步似乎很慢。

例子:

date <- c("5/31/2013 23:30", "5/31/2013 23:35", "5/31/2013 23:40", "5/31/2013 23:45", "5/31/2013 23:50", "5/31/2013 23:55")

Date <- as.POSIXct(date, format="%m/%d/%Y %H:%M")
Run Code Online (Sandbox Code Playgroud)

这不是一个大问题,但我想知道我是否忽略了提高效率的简单途径。有什么提示可以加快速度吗?谢谢。

performance r date posixct

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

在 Mac OSX 中 Mavericks 和 R 升级后,as.POSIXct 产生“未知时区”错误

我正在尝试在 Mac OS X Mavericks (10.9.4) 上的 R v3.1.1 中将字符串转换为 POSIXct。这在升级 Mavericks 然后 R 之前有效。我非常简单的代码现在发出警告,我不明白为什么:-

as.POSIXct("2014-05-24 12:45", "%Y-%m-%d %hh:%mm")
[1] "2014-05-24 12:45:00 GMT"

Warning messages:
1: In strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) :
  unknown timezone '%Y-%m-%d %hh:%mm'
2: In as.POSIXct.POSIXlt(x) : unknown timezone '%Y-%m-%d %hh:%mm'
3: In strptime(xx, f <- "%Y/%m/%d %H:%M:%OS", tz = tz) :
  unknown timezone '%Y-%m-%d %hh:%mm'
4: In as.POSIXct.POSIXlt(x) : unknown timezone '%Y-%m-%d %hh:%mm'
5: In strptime(xx, f <- "%Y-%m-%d %H:%M", tz = …
Run Code Online (Sandbox Code Playgroud)

r posixct

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

将因子转换为 POSIXct

我有一个来自 sql 查询的日期作为一个因素,我想将其设为 POSIXct

f<- as.factor("01/03/2014 20:59:30")
f
class(f)
po<-as.POSIXct(f)
po
Run Code Online (Sandbox Code Playgroud)

结果

> f<- as.factor("01/03/2014 20:59:30")
> f
[1] 01/03/2014 20:59:30
Levels: 01/03/2014 20:59:30
> class(f)
[1] "factor"
> po<-as.POSIXct(f)
> po
[1] "0001-03-20 LMT"
Run Code Online (Sandbox Code Playgroud)

您可以看到“0001-03-20 LMT”不正确。你知道如何将此因子转换为 POSIXct 吗?

谢谢

r posixct

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

更改 R 数据框中某些 POSIXct 条目的时区

我无法更改 POSIXct 对象的时区。遵循以下建议: 更改 POSIXct 对象中的时区

我试过

> test
    timestamp            dttm_utc   value estimated anomaly SITE_ID
954157 1328043600 2012-02-01 00:00:00 16.4803         0      NA      31
954158 1328043900 2012-02-01 00:05:00 16.4364         0      NA      31
> attributes(test[2,2])$tzone
     TIME_ZONE 
"America/New_York" 
> attributes(test[2,2])$tzone <- "America/Los_Angeles"
> attributes(test[2,2])$tzone
     TIME_ZONE 
"America/New_York" 
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我怎么解决这个问题?

timezone r posixct

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

创建每天创建相同间隔的时间索引

我想制作一个时间指数,从9:15:00开始,并以30分钟的间隔进行,然后在03:30:00结束.例如9:15:00,10:05:00,10:55:00等等.这是我的代码,可以完美地创建第一天的这些时间指数.但是,它会在第二天搞砸,并在09:25:00而不是09:15:00开始,并且所有间隔都是错误的.开始时间每天都在变化.

Intervals <- seq(as.POSIXct("2016-04-01 09:15:00", format="%Y-%m-%d %H:%M:%S"), as.POSIXct("2016-04-29 15:30:00", format="%Y-%m-%d %H:%M:%S"),
                   by="50 min")
Run Code Online (Sandbox Code Playgroud)

正如我试图通过变化唯一的参数来计算不同的时间间隔by="50 min",例如以by="55 min"和需要灵活固定的结束时间,所以我把它当成15:30:00之前.请我解决它?

r posixct xts

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

如何将 data.frame 中的列从 POSIXct 转换为 R 中的日期

我正在从一个 excel 文件中读取数据,并且在一列中我有在 data.frame 中被读取为 POSIXct 的日期。

本栏目内容如下:

>RawData_Date<-read_excel(path=excel_file,range=rangedate,
        col_types="date", col_names= FALSE)
>str(RawData_Date)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   1000 obs. of  1 variable:
$ X__1: POSIXct, format: "1963-01-01" "1963-01-02" "1963-01-03" "1963-01-04" ...
Run Code Online (Sandbox Code Playgroud)

后来在我的代码中,我得到了一个日期时间值"1963-01-01 01:00:00",这可能是由于操作造成的,但我不需要也不关心时间部分,所以我想最早将整个列转换为日期类型阅读excel文件后可能。

哪种方式最优雅?

r date dataframe posixct

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

如何更改 Facet 标题中显示的 POSIXct 对象?

我正在尝试使用facet_grid()创建一个ggplot2图。每个方面都必须有一个日期(这里是 POSIXct 对象),我想更改它的显示方式。

我如何控制 POSIXct 对象在 ggplot2 分面标题中显示的方式?

例如:这就是它的显示方式:“2019-03-29”,这是我希望看到的写法:“29/03/2018”

我已经看过 labeller 函数,但我不知道如何使用它来更改 POSIXct 对象显示的方式。也许我错过了一些东西。我知道构面标签可以“手动”更改,但在这里我想要一个适用于任何 POSIXct 对象的解决方案。

# create a dummy dataframe named ex
ex = structure(list(date = structure(c(1510531200, 1510531200, 1522195200, 
                                  1522195200), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
               cat = c("a", "b", "a", "b"), measure = c(0.0777420913800597, 
                                                        0.71574708330445, 0.725231731543317, 0.217509124660864)), row.names = c(NA, 
                                                                                                                                -4L), vars = "date", indices = list(0:1, 2:3), group_sizes = c(2L, 
                                                                                                                                                                                               2L), biggest_group_size = 2L, labels = structure(list(date = structure(c(1510531200, 
                                                                                                                                                                                                                                                                        1522195200), class = c("POSIXct", "POSIXt"), tzone = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 posixct

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

R向整列添加特定(不同)的时间量

我在R里有一张桌子:

start                duration
02/01/2012 20:00:00  5
05/01/2012 07:00:00  6
etc...               etc...
Run Code Online (Sandbox Code Playgroud)

我通过从Microsoft Excel导入一个如下所示的表来实现此目的:

date        time      duration
2012/02/01  20:00:00  5
etc...
Run Code Online (Sandbox Code Playgroud)

然后,我通过运行以下代码合并日期和时间列:

d.f <- within(d.f, { start=format(as.POSIXct(paste(date, time)), "%m/%d/%Y %H:%M:%S") })
Run Code Online (Sandbox Code Playgroud)

我想创建一个名为'end'的第三列,它将计算为开始时间之后的小时数.我很确定我的时间是POSIXct向量.我已经看过如何操作一个日期时间对象,但是我怎么能为整个列做到这一点?

预期结果应如下所示:

start                duration  end
02/01/2012 20:00:00  5         02/02/2012 01:00:00
05/01/2012 07:00:00  6         05/01/2012 13:00:00
etc...               etc...    etc...
Run Code Online (Sandbox Code Playgroud)

r dataframe posixct

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

R as.POSIXct时区问题

我对R中的as.POSIXct感到困惑.

我使用以下代码将列中的值转换为具有日期和时间的列.

  fname$DateTime <- as.POSIXct(paste(fname$yy, fname$mm, fname$dd, fname$HH, fname$MM), format = "%y %m %d %H %M")
Run Code Online (Sandbox Code Playgroud)

然后,我设定了绘图的时间限制.

  lims <- as.POSIXct(strptime(c("2015-10-23 4:00","2015-10-23 16:00"), format = "%Y-%m-%d %H:%M")) 
  Temp <- ggplot(DF, aes(x=DateTime, y=Temp)) + geom_line(aes(x=DateTime, y=Temp),colour="blue", alpha = 0.8) + scale_x_datetime(limits =lims, breaks=date_breaks("1 hour"), labels=date_format("%m/%d %H:%M")) + facet_wrap( ~ ID, ncol=4)
  Temp + geom_vline(xintercept=as.numeric(as.POSIXct("2015-10-23 10:30")), linetype=4, colour="purple") 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

时间序列从10月23日08:00开始,而不是10/23 4:00; 结束于10/23 20:00而不是10/23 16:00.垂直线显示在10/23 14:30而不是10/23 10:30.这是一个4小时的时间班!

那是怎么回事?如何在数据框中显示DateTime显示的正确时间序列?请帮我!

谢谢.

r posixct

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

创建日历年的开始和结束日期

我想从日历年变量(此处为 1991 到 2001)创建日历年的开始日期和结束日期,并找到了解决方案:

\n
library(lubridate)\nlibrary(dplyr)\ndf <- tibble(calendar_year = seq(1991, 2001, 1)) \n\ndf |>\n  mutate(\n    calendar_year_start_date = ymd("1991-01-01") + \n      years(calendar_year - 1991),\n    calendar_year_end_date = ymd("1991-12-31") + \n      years(calendar_year - 1991 )\n  )\n
Run Code Online (Sandbox Code Playgroud)\n

结果:

\n
# A tibble: 11 \xc3\x97 3\n   calendar_year calendar_year_start_date calendar_year_end_date\n           <dbl> <date>                   <date>                \n 1          1991 1991-01-01               1991-12-31            \n 2          1992 1992-01-01               1992-12-31            \n 3          1993 1993-01-01               1993-12-31            \n 4          1994 1994-01-01               1994-12-31            \n 5          1995 1995-01-01               1995-12-31            \n 6          1996 1996-01-01               1996-12-31            \n 7 …
Run Code Online (Sandbox Code Playgroud)

posix r date posixct lubridate

0
推荐指数
2
解决办法
66
查看次数

将时间戳添加到R中的日期

您好,数据框中有2列.第1列的日期与2017-01-01相同,第2列的时间戳如下午1:00.

我需要创建另一个列,结合这两个信息,并给我2017-01-01 13:00:00

timestamp r date posixct

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

标签 统计

posixct ×12

r ×12

date ×4

dataframe ×2

datetime ×1

ggplot2 ×1

lubridate ×1

performance ×1

posix ×1

timestamp ×1

timezone ×1

xts ×1