2011-01-14 55 views
5

Tôi mới sử dụng R và khủng khiếp với ngày xử lý. Ngày sau được trả về từ một truy vấn đến API tìm kiếm Twitter và được lưu trữ dưới dạng một chuỗi ký tự trong một khung dữ liệu của tôi.Chuyển đổi Dấu thời gian Twitter thành R

"Fri, 14 tháng 1 năm 2011 03:01:22 +0000"

Làm thế nào tôi có thể chuyển đổi này vào một ngày và thay đổi múi giờ để có thời gian chuẩn Đông?

Tôi đoán điều này có lẽ là thẳng về phía trước, nhưng tôi dabbled với strptime và đã hư không.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

+0

Ngôn ngữ nào bạn đang sử dụng? - Cập nhật: nvm, tôi không nhận ra R là ngôn ngữ. Doh. – coreyward

Trả lời

9

này làm việc cho tôi (tôi đang ở Anh):

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

Ngày/lần nhầm lẫn tôi rất nhiều, vì vậy tôi hy vọng các công trình trên cho bạn, ngay cả khi bạn đang ở múi giờ khác với GMT, nhưng tôi không thể chắc chắn!

Hy vọng nó giúp ích ít nhất một chút, Tony

+0

Xin chào Tony, cảm ơn sự giúp đỡ. Trên máy tính của tôi, biểu thức của lệnh thứ hai trả về "NA" như tôi đã nhận được dưới đây. Khi được tham chiếu cho các câu trả lời khác, bạn có nghĩ rằng nó có liên quan đến cài đặt miền địa phương của tôi không? Tôi cũng đang sử dụng máy tính Windows 7. – Btibert3

+0

Tôi đã nâng cấp lên 2,12 và mã này hoạt động như mong đợi (là trên 2,10). Có điều gì khác biệt giữa hai phiên bản này bạn có biết không? – Btibert3

+0

@ Btibert3 không có ý tưởng gì đã thay đổi giữa hai phiên bản của R, nhưng vui vì nó làm việc cho bạn giao phối. :) –

6

Từ 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" 

Hãy cẩn thận về ngôn ngữ: nếu bạn không thiết lập lại nó để C, hàm sẽ cố gắng phân tích chữ viết tắt các ngày trong tuần và tháng như cục bộ.

+0

Cảm ơn sự giúp đỡ của bạn, nhưng khi tôi cố chạy mã mẫu của bạn, nó được đánh giá là NA trên máy của tôi. Tôi thậm chí đã thử các cuộc gọi chức năng tương tự bằng cách sử dụng dữ liệu của tôi và có cùng một điều. – Btibert3

+0

Lúc đầu, tôi cũng nhận được NA. Bạn không quên đặt lại ngôn ngữ? – ulidtko

+0

Có, tôi đã chạy mã của bạn và nó đã không đánh giá ngày, chỉ NA. cảm ơn một lần nữa vì sự giúp đỡ của bạn, chỉ cần stumped. – Btibert3

1

Tôi thực sự khuyên bạn nên xem gói twitteR của Jeff Gentry trên CRAN. Trong số niceties khác, nó phân tích chuỗi ngày dành cho bạn:

> 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

Xin chào Jeffrey, tôi đã thấy điều đó và gói đó thật tuyệt vời. Một điều không hiệu quả đối với tôi là cuộc gọi ID để nhận được ID của trạng thái của lớp, mà tôi cần. Nó làm việc cho bạn? Mặc dù tôi đang nhận dữ liệu từ Twitter, tôi đang sử dụng dữ liệu này làm ví dụ về phân tích cú pháp chung chung. Thx lần nữa. – Btibert3

+0

oh, tôi thấy bây giờ nó xử lý id như một phao. Yeah - điều đó có lẽ sẽ không hoạt động tốt ... –

Các vấn đề liên quan