Sor*_*osh 6 formatting r date posixct
我正在研究UCI的"人员活动数据集的本地化数据"数据集,在这个数据集中有一列日期和时间(均在一列中),格式如下:
27.05.2009 14:03:25:777
27.05.2009 14:03:25:183
27.05.2009 14:03:25:210
27.05.2009 14:03:25:237
...
Run Code Online (Sandbox Code Playgroud)
我想知道是否有使用R将此列转换为时间戳.
Wal*_*cio 11
首先,我们需要用毫秒替换从秒到毫秒的冒号,否则最后一步将无法工作(感谢Dirk Eddelbuettel这个).因为在最后R将使用它想要的分隔符,为了更快,我将继续并将所有冒号替换为点:
x <- "27.05.2009 14:03:25:777" # this is a simplified version of your data
y <- gsub(":", ".", x) # this is your vector with the aforementioned substitution
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这就是你的矢量应该照顾的方式gsub:
> y
[1] "27.05.2009 14.03.25.777"
Run Code Online (Sandbox Code Playgroud)
现在,为了让它显示毫秒,你首先需要调整一个R选项,然后使用一个名为的函数strptime,它将你的日期向量转换为POSIXlt(一种R友好的)格式.只需执行以下操作:
> options(digits.secs = 3) # this tells R you want it to consider 3 digits for seconds.
> strptime(y, "%d.%m.%Y %H:%M:%OS") # this finally formats your vector
[1] "2009-05-27 14:03:25.777"
Run Code Online (Sandbox Code Playgroud)
我在这里学到了很好的技巧.另一个答案也说你可以跳过options设置和使用,例如strptime(y, "%d.%m.%Y %H:%M:%OS3"),但它不适合我.Henrik注意到该函数的帮助页面?strptime指出该%OS3位与操作系统有关.我正在使用更新的Ubuntu 13.04并使用%OS3收益率NA.
使用时strptime(或其他与POSIX相关的功能as.Date),请记住一些最常用的转换(为简洁而编辑,如DWin.完整列表所示strptime):
%a 当前语言环境中缩写的工作日名称.%A 当前语言环境中的完整工作日名称.%b 当前语言环境中的缩写月份名称.%B 当前区域设置中的完整月份名称.%d 十进制数字(01-31).%H小时数十进制数(00-23).24:00:00的时间被接受输入.%I 小时数十进制数(01-12).%j 十进制数字(001-366)的一年中的某一天.%m 月份为十进制数字(01-12).%M 分钟为十进制数(00-59).%p区域设置中的AM/PM指示符.与...一起使用%I而不是与之一起使用%H.%U一年中的一周作为十进制数(00-53),使用星期日作为一周的第一天1(并且通常以一年的第一个星期日作为第1周的第1天).美国大会.%w 工作日为十进制数(0-6,星期日为0).%W使用星期一作为一周的第一天(并且通常以一年的第一个星期一作为第1周的第1天)作为十进制数(00-53)的一周中的一周.英国大会.%y没有世纪的年份(00-99).输入时,值00到68的前缀为20,而69到99的前缀为19%Y与世纪的一年.请注意,虽然原始公历中没有零,但ISO 8601:2004将其定义为有效(解释为1BC)| 归档时间: |
|
| 查看次数: |
28549 次 |
| 最近记录: |