2011-01-14 13 views
5

Soy nuevo en R y soy terrible con las fechas de manejo. La siguiente fecha se devuelve de una consulta a la API de búsqueda de Twitter y se almacena como una cadena de caracteres en un marco de datos.Convierte la marca de tiempo de Twitter en R

"Vier 14 Ene 2011 03:01:22 +0000"

¿Cómo puedo convertir esto en una fecha y cambiar la zona horaria a ser hora estándar del Este?

Creo que esto es probablemente sencillo, pero incursioné con el ritmo y no conseguí nada.

¡Cualquier ayuda será muy apreciada!

+0

Qué idioma se utiliza? - Actualización: nvm, no me di cuenta de que R era un idioma. Doh. – coreyward

Respuesta

9

Esto funciona para mí (estoy en el Reino Unido):

> (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" 

Fechas/veces me confunden mucho, así que estoy esperando que lo anterior funcione para usted, incluso si se encuentra en una zona horaria diferente de GMT, ¡pero no puedo estar seguro!

espero que ayude un poco al menos, , Tony

+0

Hola Tony, gracias por la ayuda. En mi máquina, la expresión del segundo comando devuelve "NA" como he recibido a continuación. Como se hace referencia para otras respuestas, ¿cree que tiene que ver con mi configuración regional? También estoy en una máquina con Windows 7. – Btibert3

+0

Actualicé a 2.12 y este código funcionó como se esperaba (estaba en 2.10). ¿Sabías que hay algo diferente entre estas dos versiones? – Btibert3

+0

@ Btibert3 ni idea de qué ha cambiado entre esas dos versiones de R, pero me alegro de que haya funcionado para ti, amigo. :) –

6

Desde el 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" 

tener cuidado con la configuración regional: si no se restablece el usuario a C, la función intentará analizar entre semana y el mes de abreviaturas localizada.

+0

Gracias por su ayuda, pero cuando traté de ejecutar su código de muestra, evaluó NA en mi máquina. Incluso probé la misma llamada de función usando mis datos y obtuve lo mismo. – Btibert3

+0

Al principio estaba obteniendo NA también. ¿No olvidaste restablecer la configuración regional? – ulidtko

+0

Sí, ejecuté su código y no se evaluó hasta la fecha, solo NA. gracias de nuevo por su ayuda, solo perplejo. – Btibert3

1

Recomiendo encarecidamente que eche un vistazo al paquete twitteR de Jeff Gentry en CRAN. Entre otras lindezas, que analiza las cadenas de fecha para usted:

> library(twitteR) 
> tweets = searchTwitter('#rstats') 
> length(tweets) 
[1] 25 
> tweet = tweets[[1]] 
> str(tweet) 
Formal class 'status' [package "twitteR"] with 10 slots 
    [email protected] text  : chr "The Joy of Sweave \023 A Beginner\031s Guide to Reproducible Research with Sweave: Just& http://goo.gl/fb/APmCb #rstats" 
    [email protected] favorited : logi FALSE 
    [email protected] replyToSN : chr(0) 
    [email protected] created  : POSIXct[1:1], format: "2011-01-18 04:48:05" 
    [email protected] truncated : logi FALSE 
    [email protected] replyToSID : num(0) 
    [email protected] id   : num 2.72e+16 
    [email protected] replyToUID : num(0) 
    [email protected] 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__ 
    [email protected] screenName : chr "Rbloggers" 
+0

Hola Jeffrey, lo vi y el paquete es excelente. Una cosa que no funcionó para mí fue la llamada de identificación para obtener el ID del estado de la clase, que necesito. ¿Funciona para ti? Aunque obtengo datos de Twitter, estoy usando esto como ejemplo de análisis de fecha general. Thx otra vez. – Btibert3

+0

oh, ahora veo que trata a la identificación como un flotador. Sí, eso probablemente no funcionará tan bien ... –

Cuestiones relacionadas