【问题标题】:Convert string to timestamps in R将字符串转换为R中的时间戳
【发布时间】:2022-10-17 19:54:41
【问题描述】:

我有格式如下的字符串:

Tue Feb 11 12:28:36 +0000 2014

我尝试使用以下方法将此字符串转换为 R 中的时间戳:

timeobj <- strptime(df[1], format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT")

其中 df[1] 的格式为 Tue Feb 11 12:28:36 +0000 2014

但是,我收到如下错误:

Error in strptime(df[1], format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT") : 
  input string is too long

我怎样才能解决这个问题?

dput(df[ 1:5, 1]) =

c("Tue Feb 11 12:47:26 +0000 2014", "Tue Feb 11 12:55:09 +0000 2014", "Tue Feb 11 13:22:29 +0000 2014", "Tue Feb 11 13:24:31 +0000 2014", "Tue Feb 11 13:34:00 +0000 2014") 

【问题讨论】:

  • 我没有收到错误,但它为我返回 NA,尽管我认为您的格式规范是正确的。
  • 您的代码对我来说很好:strptime("Tue Feb 11 12:28:36 +0000 2014", format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT") 请提供可重现的示例:dput(df[ 1:5, 1]
  • c(“2 月 11 日星期二 12:47:26 +0000 2014”、“2 月 11 日星期二 12:55:09 +0000 2014”、“2 月 11 日星期二 13:22:29 +0000 2014”、“2 月 11 日星期二 13: 24:31 +0000 2014”、“2 月 11 日星期二 13:34:00 +0000 2014”)
  • 谢谢@yuyu。请您在问题正文中包含dput() 输出,而不是评论?这是问题的重要部分,cmets是暂时的
  • 帽子船长,我编辑了问题

标签: r datetime


【解决方案1】:

看起来你的语言环境不适合缩写的工作日和月份名称。

x <- c("Tue Feb 11 12:47:26 +0000 2014",
  "Tue Feb 11 12:55:09 +0000 2014", "Tue Feb 11 13:22:29 +0000 2014",
  "Tue Feb 11 13:24:31 +0000 2014", "Tue Feb 11 13:34:00 +0000 2014")

Sys.setlocale("LC_ALL", "de_AT.UTF-8")
strptime(x, format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT")
#[1] NA NA NA NA NA

Sys.setlocale("LC_ALL", "C")
strptime(x, format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT")
#[1] "2014-02-11 12:47:26 GMT" "2014-02-11 12:55:09 GMT"
#[3] "2014-02-11 13:22:29 GMT" "2014-02-11 13:24:31 GMT"
#[5] "2014-02-11 13:34:00 GMT"

strptime 的手册说:'%a' 工作日的缩写名称当前语言环境在这个平台上。

此外,您似乎正在提供一个带有df[1] 的data.frame,而不是一个可能使用df[,1] 提供的向量。

【讨论】:

  • 是的对不起。我仍然无法重现问题中显示的错误。您可以更新可以重现错误的问题吗?
  • 它仍然与之前相同的错误 strptime(df[1], format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT") 中的错误:输入字符串也是长
  • 但是使用问题中的给定数据,我无法重现此错误。
  • 你的意思是你需要所有的数据?
  • 也许尝试使用df[,1] 而不是df[1]
【解决方案2】:

%H 就足够了。 timeobj &lt;- strptime(df[1], format = "%a %b %e %H %z %Y", tz = "GMT")

【讨论】:

    猜你喜欢
    • 2020-11-22
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2017-07-29
    • 2013-09-25
    相关资源
    最近更新 更多