如何在R中将时间变量转换为数字变量

时间:2014-04-13 23:50:18

标签: r date datetime

我有一个日期格式的文件,其中包含以下格式的日期格式列

4\8    # April 8th, 2013
7\12   # July 12th, 2013

所有这些日期在2013年都是默认日期,现在我想创建一个列,指定自4 \ 1 \ 2013(2013年4月1日)以来的天数,4月8日为8天。

我该怎么办?我应该使用填写2013作为前缀然后在R中使用as.Date函数?但是,似乎我应该用“/”

替换“\”

好的,我想总结@ rawr的解决方案,以便其他人可以关注

首先,我需要从“\”更改为“//”,以便通过R

读取格式要求

其次,我需要将2013追加到字符串的结尾,这里的技巧是首先执行paste0(dates, "\\")(我自己想出来了!)然后执行dates <- paste0(dates, '\\2013')以确保有两个“\”在2013年之前,否则2013年之前总会有一个逃脱符号。

第三,执行as.Date("6\\\\4\\\\2013", format = '%m\\\\%d\\\\%Y')或类似的事情。

1 个答案:

答案 0 :(得分:3)

\是转义字符,所以R不会像4\8那样,所以你需要\\使用\

> cat('\\')
\

这是一种方法:

dates
# [1] "4\\8"  "7\\12"
dates <- paste0(dates, '\\2013')
# [1] "4\\8\\2013"  "7\\12\\2013"
as.Date(dates, format = '%m\\%d\\%Y') - as.Date('2013-04-01') + 1
# Time differences in days
# [1]   8 103
as.numeric(as.Date(dates, format = '%m\\%d\\%Y') - as.Date('2013-04-01') + 1)
# [1]   8 103