2012-01-17 50 views
6

Tôi đang nhập một số dữ liệu từ NOAA và có ngày và giờ trong các cột riêng biệt. Tôi đã tìm kiếm một cách thanh lịch để nối thêm một cột datetime duy nhất trong khung dữ liệu R của tôi nhưng không thể. Tôi tìm thấy một câu hỏi trao đổi stack về nghịch đảo nhưng không phải là một trong những điều này. Có một lệnh as.Date đơn giản tôi có thể chạy? Tôi chỉ đơn giản là sử dụng read.table cho một tập tin văn bản tải về và nó nhập khẩu chỉ tìm thấy.Ngày và Thời gian trong các cột riêng biệt, chuyển đổi thành ngày giờ trong R

phao dữ liệu là ở đây: http://www.ndbc.noaa.gov/data/realtime2/51202.txt

>yr mo dy hr mn degT m.s m.s.1 m sec sec.1 degT.1 hPa degC degC.1 degC.2 nmi hPa.1 ft 
>2012 1 16 3 55 MM MM MM 1.4 10 7.2 339 MM MM 23.9 MM MM MM MM 
+0

Tôi giả sử đầu ra là năm 2012 và năm ở đầu dòng dữ liệu chỉ là mã định danh mẫu? –

+0

Cảm ơn Gavin, vâng tôi đã sửa nó. –

Trả lời

10

Bạn có thể sử dụng ISOdatetime, mà chỉ là một wrapper đơn giản để as.POSIXct. Đảm bảo chỉ định đối số sec là 0.

Data$timestamp <- with(Data, ISOdatetime(YY,MM,DD,hh,mm,0)) 
5

Yep, bạn muốn dán các cột thời gian hẹn hò cùng nhau và sau đó ép buộc rằng chuỗi đầy đủ cho một đối tượng thời gian ngày.

dat <- within(dat, datetime <- as.POSIXlt(paste(yr, mo, dy, hr, mn), 
              format = "%Y %m %d %H %M")) 

giả định dat là đối tượng chứa dữ liệu phao. Điều này thêm một cột mới là đối tượng lớp "POSIXlt" hoặc bạn có thể sử dụng as.POSIXct() nếu bạn thích định dạng khác.

Hoặc, sau khi xem xét các tập tin như vậy có thể sử dụng tên cột của họ:

dat <- within(dat, datetime <- as.POSIXlt(paste(YY, MM, DD, hh, mm), 
              format = "%Y %m %d %H %M")) 
Các vấn đề liên quan