【问题标题】:How to convert time variable into numeric variable in R如何将时间变量转换为R中的数值变量
【发布时间】:2014-04-13 23:50:18
【问题描述】:

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

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'),或者类似的东西。

【问题讨论】:

    标签: r date datetime


    【解决方案1】:

    \是一个转义字符,所以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
    

    【讨论】:

    • 你的命令日期
    • 您的后续命令仍然无效,我在原始数据中检查了班级(日期),这是因素
    • 使用as.character() 将它们转换为字符。或者在制作 df 时,使用data.frame(..., stringsAsFactors = FALSE)。我猜as.Date 会将因子转换为数字(这将给出 1、2、3 等),然后转换为日期
    • 我在 paste0 命令之前和之后都尝试过 as.character(),在 2013 年之前都只会给出一个转义符号
    • 好的,我在日期
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2020-01-21
    • 2011-05-26
    • 2019-11-15
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多