【问题标题】:Incorrect replacement of strings in RR中的字符串替换不正确
【发布时间】:2020-06-28 13:11:07
【问题描述】:

我需要替换 R 中尴尬的字符串,特别是格式怪异的时间。数据如下所示:

      Date |    Time | AmbientTemp
2000-01-01 | 11:00 a |          25
2000-01-01 | 11:30 a |        25.5 
2000-01-01 | 11:00 p |          20
2000-01-01 | 11:30 p |        19.5

ap 分别表示 AM 和 PM(显然)。

lubridatebase R 无法将这些日期转换为正确的格式。因此,我转向繁琐的 str_replace_all 函数(来自 stringr 包)将我的所有时间转换为一个大型数据帧:>130000 条记录。

示例函数:

uploadDat$Time = str_replace_all(uploadDat$Time,"11:00 a","11:00")
uploadDat$Time = str_replace_all(uploadDat$Time,"11:00 p","23:00")

在应用stringr的功能之前,我使用as.character()更改了时代的班级。

结果是完美的,除了 11 点钟时间(如上)转换如下:

      Date |   Time | AmbientTemp
2000-01-01 | 101:00 |          25
2000-01-01 | 101:30 |        25.5 
2000-01-01 | 113:30 |          20
2000-01-01 | 113:30 |        19.5

为什么这些特定时间转换不正确?

【问题讨论】:

    标签: r string time replace stringr


    【解决方案1】:

    我们可以在时间结束时将paste"m"转换成POSIXct

    format(as.POSIXct(paste0(df$Time, "m"), format = "%I:%M %p"), "%T")
    #[1] "11:00:00" "11:30:00" "23:00:00" "23:30:00"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 2021-04-16
      • 2012-04-26
      • 2021-10-30
      • 2015-06-11
      相关资源
      最近更新 更多