我正在使用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,min与hr数据没有明显的关系.
我看着使用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.
我经常需要将(长)字符串转换为 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)
这不是一个大问题,但我想知道我是否忽略了提高效率的简单途径。有什么提示可以加快速度吗?谢谢。
我正在尝试在 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) 我有一个来自 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 吗?
谢谢
我无法更改 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)
为什么这不起作用?我怎么解决这个问题?
我想制作一个时间指数,从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之前.请我解决它?
我正在从一个 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文件后可能。
哪种方式最优雅?
我正在尝试使用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里有一张桌子:
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中的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显示的正确时间序列?请帮我!
谢谢.
我想从日历年变量(此处为 1991 到 2001)创建日历年的开始日期和结束日期,并找到了解决方案:
\nlibrary(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 )\nRun 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) 您好,数据框中有2列.第1列的日期与2017-01-01相同,第2列的时间戳如下午1:00.
我需要创建另一个列,结合这两个信息,并给我2017-01-01 13:00:00