2013-04-13 43 views
10

Rất nhiều người hỏi cách loại bỏ thời gian và giữ ngày, nhưng còn cách khác thì sao? Đưa ra:Tách ngày và giữ nguyên thời gian

myDateTime <- "11/02/2014 14:22:45" 

Tôi muốn xem:

myTime 
[1] "14:22:45" 

múi giờ không cần thiết.

Tôi đã cố gắng (từ câu trả lời khác)

as.POSIXct(substr(myDateTime, 12,19),format="%H:%M:%S") 

[1] "2013/04/13 14:22:45 NZST"

Mục đích là để phân tích các sự kiện được ghi nhận trong nhiều ngày theo thời gian trong ngày.

Cảm ơn

Edit:

Hóa ra không có "thời gian" đối tượng thuần túy, vì vậy mỗi lần cũng phải có một ngày.

Cuối cùng tôi đã sử dụng

as.POSIXct(as.numeric(as.POSIXct(myDateTime)) %% 86400, origin = "2000-01-01") 

chứ không phải là giải pháp nhân vật, bởi vì tôi cần phải làm số học trên các kết quả. Giải pháp này tương tự như giải pháp ban đầu của tôi, ngoại trừ ngày có thể được kiểm soát liên tục - "2000-01-01" trong trường hợp này, trong khi nỗ lực của tôi chỉ sử dụng ngày hiện tại khi chạy.

+1

Tôi cuối cùng tình cờ gặp phải chron, có đối tượng lớp "thời gian". Điều này làm cho việc bổ sung dễ dàng hơn nhiều, ví dụ: 18:00 + 12:00 = 1,25 ngày. – nacnudus

+0

bạn cũng có thể sử dụng gói 'hms' sau khi gọi' format() ', tức là' hms :: as.hms (x) ' – Von

Trả lời

4

Nếu thời gian trong một ngày giờ rất hữu ích cho vấn đề của bạn, bạn có thể có được điều này với %%, các nhà điều hành còn lại, lấy phần còn lại modulo 86400 (số giây trong một ngày).

stamps <- c("2013-04-12 19:00:00", "2010-04-01 19:00:01", "2018-06-18 19:00:02") 
as.numeric(as.POSIXct(stamps)) %% 86400 
## [1] 0 1 2 
+0

Yêu số ma thuật ['60 * 60 * 24'] (https://www.google.com/search?q=60*60*24). – Jim

17

Tôi nghĩ bạn đang tìm kiếm hàm format.

(x <- strptime(myDateTime, format="%d/%m/%Y %H:%M:%S")) 
#[1] "2014-02-11 14:22:45" 
format(x, "%H:%M:%S") 
#[1] "14:22:45" 

Đó là character, không phải là "thời gian", nhưng sẽ làm việc với một cái gì đó giống như aggregate nếu đó là những gì bạn có nghĩa là bằng cách "phân tích các sự kiện được ghi nhận trong vài ngày bởi thời điểm chỉ một ngày."

+0

Tôi đang gặp phải vấn đề trong hàm strptime. Nếu tôi thêm văn bản ngay trước ngày như sau: strptime ("hello Tue, 23 Mar 2010 14:36:38 -0400", "% a,% d% b% Y% H:% M:% S% z ") #NA Bất kỳ ý tưởng nào là vấn đề – Ankit

+0

@Ankit bạn phải tính đến nó trong đối số' định dạng'. Hãy thử điều này: 'strptime (" hello Tue, 23 Mar 2010 14:36:38 -0400 "," hello% a,% d% b% Y% H:% M:% S% z ")' – GSee

+0

@GSee Tuyệt vời câu trả lời. Đây là những gì tôi đang tìm kiếm. – Gandalf

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