【问题标题】:R and Posix: Importing times into dataframe results in lost informationsR 和 Posix:将时间导入数据帧会导致信息丢失
【发布时间】:2016-03-19 12:12:30
【问题描述】:

这是我在 Stackoverflow 上的第一个问题,如果我犯了任何错误,我深表歉意..

我正在尝试在 R 中导入一个数据帧,其中包含 3 行,其中第一行是时间,表示为:“分钟:秒,毫秒”。例如:“05:02,159”。

每次我尝试导入时间,保留毫秒,整个时间似乎重置。

下面是一个示例代码,时间格式与数据框中的时间格式相同:

> time1 <- "00:00,05"
> time1
[1] "00:00,05"

以上信息正确保留。然后我尝试将 char 对象转换为 POSIX 对象。

> time2 <- as.POSIXct(strptime(time1,"%M:%OS"))

当我尝试可视化“time2”时,只显示日期

> time2
[1] "2016-03-19 CET"

当我尝试格式化输出时,时间信息似乎已被重置

> strftime(time2,'%Y-%m-%d %H:%M:%OS3')
[1] "2016-03-19 00:00:00.000"
> strftime(time2,'%H:%M:%OS3')
[1] "00:00:00.000"

我也尝试调整 options(digits.secs = 3) 设置,但没有任何改变。

【问题讨论】:

  • 这可能取决于您的语言环境;它在我的系统区域设置中使用点而不是逗号(即"00:00.05")。

标签: r posix


【解决方案1】:

用点替换逗号。

time1 <- "00:00,05"
time2 <- as.POSIXct(strptime(gsub(",", ".", time1, fixed = TRUE),"%M:%OS"))
strftime(time2,'%Y-%m-%d %H:%M:%OS4')
#[1] "2016-03-19 00:00:00.0499"

注意浮点精度在这里是相关的。

【讨论】:

  • 当我导入数据框时,我正确地将逗号设置为小数点分隔符,但这与 chr 对象无关,作为时间列。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多