我有一个数据框,日期为"%d-%m-%Y"格式,并有周数.日期是工作日,我希望那个星期的星期六在另一列.
我最初使用Chron包中的函数检查日期是工作日还是周末,但这是布尔验证.我已将日期变量格式化为日期格式,并提取每个日期的周数.
df = data.frame(date=c("2014-08-20", "2014-08-25", "2014-10-08"))
df$date=as.Date(df$date,format="%Y-%m-%d")
df$week=week(ymd(df$date))
Run Code Online (Sandbox Code Playgroud)
预期结果应该是:
date week EOW
2014-08-20 34 2014-08-23
2014-08-25 34 2014-08-30
2014-10-08 41 2014-10-11
Run Code Online (Sandbox Code Playgroud) 我有很多次,想要在一个条形图中绘制每次的频率
library(ggplot2)
library(chron)
test <- data.frame(times = c(rep("7:00:00",4), rep("8:00:00",3),
rep("12:00:00",1), rep("13:00:00",5)))
test$times <- times(test$times)
test
times
1 07:00:00
2 07:00:00
3 07:00:00
4 07:00:00
5 08:00:00
6 08:00:00
7 08:00:00
8 12:00:00
9 13:00:00
10 13:00:00
11 13:00:00
12 13:00:00
13 13:00:00
Run Code Online (Sandbox Code Playgroud)
binwidth选择值代表分钟
p <- ggplot(test, aes(x = times)) + geom_bar(binwidth=1/24/60)
p + scale_x_chron(format="%H:%M")
Run Code Online (Sandbox Code Playgroud)
如您所见,x轴上的刻度加一小时:
我觉得这与时区有关,但我真的不能这样做:
Sys.timezone()
[1] "CET"
Run Code Online (Sandbox Code Playgroud)
编辑:感谢@shadow的评论
更新:
如果我先跑,Sys.setenv(TZ='GMT')它会很完美.问题在于times()功能.我自动设置时区GMT,如果我正在绘制x轴,ggplot会注意到我的系统时区是CET并且在绘图上增加了一个小时.现在如果我将我的系统时区设置为GMT,ggplot不会增加一小时.
我正试图将时间从午夜转换为秒.我很难从chron包中获取times()函数.这是我使用它的方式:
> library(chron)
> 24 * 24 * 60 * (times(50))
Error in 24 * 24 * 60 * (times(50)) :
non-numeric argument to binary operator
>
>
> library(chron)
> 24 * 24 * 60 times(5000)
Error: unexpected symbol in "24 * 24 * 60 times"
Run Code Online (Sandbox Code Playgroud)
有什么建议?
更新:
> sessionInfo()
R version 2.14.0 (2011-10-31)
Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices …Run Code Online (Sandbox Code Playgroud) 通常,我使用chron来表示日期/时间对象.但是,我需要使用一些与POSIX格式一起使用的函数,所以我试图从chron转到POSIXct.使用as.POSIXct()似乎可以工作,但结果是在本地时间而不是GMT(原始数据在GMT中).
x <- chron(dates="05/12/15", times="12:30:45")
as.POSIXct(x, tz="GMT")
"2015-05-12 13:30:45 BST"
Run Code Online (Sandbox Code Playgroud)
我想要的是:
"2015-05-12 12:30:45 GMT"
Run Code Online (Sandbox Code Playgroud)
但我找不到获得它的方法.
strptime()将无法工作,因为原始输入不是字符串,而是chron对象.当然,我可以从一个chron对象转到一个字符串,然后转到POSIXct,但这似乎有点令人费解.
我想我可以强制我的R会话使用GMT和Sys.timezone(),但我不愿意.还有其他建议吗?谢谢.
它m trying to find a way to create a column of the hours of arrival of different individuals from 18:30, by adding the hours and minutes to 18:30, but it doesn工作,每次我尝试将我想要添加的小时和分钟的列格式从“因子”转换为时间格式(例如 chron 或 POSIXct)时,它会添加今天的日期,我想仅添加小时和分钟,而不考虑日期。
例如,我想将 03:38 小时添加到 18:30,即 22:08。因此,我想找到一种方法来创建一个包含所有最后时间(每个人到达的时间)的专栏。另一个示例是将 00:47 小时添加到 18:30,即 19:17。
我尝试将小时+分钟转换为数字格式,然后将其添加到 18.5(即 18:30,只是数字格式),然后我到达了最后几个小时,但它们是数字格式,并且我希望它们以小时为单位。例如:
我将 3.6425980(即 03:38)添加到 18.5(即 18:30),最后一个小时是 22.14260(即 22:08),但我不知道如何将 22.14260 转换为 22:08。我需要对大量数据执行此操作,因此我需要一个执行上述操作之一的代码。
有人能帮我吗?
谢谢!