【问题标题】:Convert Twitter Timestamp in R在 R 中转换 Twitter 时间戳
【发布时间】:2011-01-14 22:55:24
【问题描述】:

我是 R 新手,处理日期很糟糕。以下日期从查询返回到 Twitter 搜索 API,并作为字符串存储在我的数据框中。

“2011 年 1 月 14 日星期五 03:01:22 +0000”

如何将其转换为日期并将时区更改为东部标准时间?

我认为这可能是直截了当的,但我涉足 strptime 却一无所获。

任何帮助将不胜感激!

【问题讨论】:

  • 您使用什么语言? — 更新:nvm,我没有意识到 R 是一种语言。呵呵。

标签: datetime r


【解决方案1】:

这对我有用(我在英国):

> ( str <- "Fri, 14 Jan 2011 03:01:22 +0000" )
[1] "Fri, 14 Jan 2011 03:01:22 +0000"

> ( str <- strptime(str, "%a, %d %b %Y %H:%M:%S %z", tz = "GMT") )
[1] "2011-01-14 03:01:22 GMT"

> ( dt.gmt <- as.POSIXct(str, tz = "GMT") )
[1] "2011-01-14 03:01:22 GMT"

> format(dt.gmt, tz = "EST", usetz = TRUE)
[1] "2011-01-13 22:01:22 EST"

日期/时间让我很困惑,所以我希望以上内容对你有用,即使你在与 GMT 不同的时区,但我不能确定!

希望它至少有一点帮助, 托尼

【讨论】:

  • 您好托尼,感谢您的帮助。在我的机器上,第二个命令的表达式返回“NA”,如下所示。正如其他答案所引用的那样,您认为这与我的语言环境设置有关吗?我也在一台 Windows 7 机器上。
  • 我升级到 2.12 并且此代码按预期工作(在 2.10 上)。你知道这两个版本有什么不同吗?
  • @Btibert3 不知道这两个版本的 R 之间有什么变化,但很高兴它对你有用。 :)
【解决方案2】:

来自help(strptime)

> Sys.setlocale("LC_TIME", "C")
[1] "C"
> strptime("Tue, 23 Mar 2010 14:36:38 -0400",
+          "%a, %d %b %Y %H:%M:%S %z",
+          tz="GMT")
[1] "2010-03-23 18:36:38 GMT"

注意区域设置:如果您不将其重置为C,该函数将尝试将工作日和月份缩写解析为本地化。

【讨论】:

  • 感谢您的帮助,但是当我尝试运行您的示例代码时,它在我的机器上评估为 NA。我什至使用我的数据尝试了相同的函数调用并得到了相同的结果。
  • 起初我也得到了 NA。你没忘记重置语言环境吗?
  • 是的,我运行了你的代码,但它没有计算到日期,只是不适用。再次感谢您的帮助,只是被难住了。
  • @btibert3 让我们尝试解决您的困惑。您的操作系统和语言环境是什么?
  • Windows 7,并使用 Sys.locale(),我得到:“LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=英语_United States.1252"
【解决方案3】:

我强烈建议您查看 Jeff Gentry 在 CRAN 上的 twitteR 包。除其他细节外,它还为您解析日期字符串:

> library(twitteR)
> tweets = searchTwitter('#rstats')
> length(tweets)
[1] 25
> tweet = tweets[[1]]
> str(tweet)
Formal class 'status' [package "twitteR"] with 10 slots
  ..@ text        : chr "The Joy of Sweave \023 A Beginner\031s Guide to Reproducible Research with Sweave: Just& http://goo.gl/fb/APmCb #rstats"
  ..@ favorited   : logi FALSE
  ..@ replyToSN   : chr(0) 
  ..@ created     : POSIXct[1:1], format: "2011-01-18 04:48:05"
  ..@ truncated   : logi FALSE
  ..@ replyToSID  : num(0) 
  ..@ id          : num 2.72e+16
  ..@ replyToUID  : num(0) 
  ..@ statusSource: chr "&lt;a href=&quot;http://www.google.com/support/youtube/bin/answer.py?hl=en&amp;answer=164577&quot; rel=&quot;nofollow&quot;&gt;"| __truncated__
  ..@ screenName  : chr "Rbloggers"

【讨论】:

  • 嗨,杰弗里,我确实看到了,而且包裹很棒。对我不起作用的一件事是 ID 调用以获取我需要的类“状态”的 ID。对你起作用吗?虽然我从 Twitter 获取数据,但我将其用作一般日期解析的示例。再次感谢。
  • 哦,我现在看到它将 id 视为浮点数。是的 - 这可能不会那么好......
猜你喜欢
  • 2021-07-16
  • 2019-03-25
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多