2016-09-28 20 views
5

Tôi cố gắng để loại bỏ các giây từ một cột giờ ở định dạng POSIXct:Di giây từ thời gian trong R

#"2016-04-02 10:33:45 COT" "2016-04-02 22:19:24 COT" 
#"2016-04-09 17:47:13 COT" "2016-04-13 16:56:23 COT" 

x <- structure(c(1459589625, 1459631964, 1460220433, 1460562983), 
    class = c("POSIXct", "POSIXt"), tzone = "") 

tôi đang cố gắng này, nhưng tôi không nhìn thấy kết quả:

y <- as.POSIXct(x, format = "%d/%m/%Y %H:%M") 

Trả lời

3

Không, bạn đang đưa ra as.POSIXct một định dạng sai ...

Điều gì về việc sử dụng định dạng

datetimes = as.POSIXct(c("2016-04-02 10:33:45 COT", "2016-04-02 22:19:24 COT" ,"2016-04-09 17:47:13 COT", "2016-04-13 16:56:23 COT")  
format(datetimes,format='%Y%m%d %H:%M') 

[1] "20160402 10:33" "20160402 22:19" "20160409 17:47" "20160413 16:56" 
+0

Dường như thiếu dấu ngoặc đơn phải trên dòng đầu tiên. Không phải là một việc lớn, vẫn rất hữu ích! – EntryLevelR

0

Nếu bạn muốn làm tròn ngày đến vài phút, bạn có thể làm điều này:

x <- as.POSIXlt(c("2016-04-02 10:33:45 COT")) 
    res <-as.POSIXlt(floor(as.double(x)/60) * 60, origin = '1970-01-01') 
    res 
    # "2016-04-02 10:33:00 BST" 
+0

Xem '% /%' để đơn giản hóa biểu thức một chút. –

0

Chỉ cần sử dụng chuỗi con:

datetimes <- c("2016-04-02 10:33:45 COT", "2016-04-02 22:19:24 COT" , 
       "2016-04-09 17:47:13 COT", "2016-04-13 16:56:23 COT") 

as.POSIXct(substring(datetimes, 1, nchar(datetimes[1])-7)) 

#[1] "2016-04-02 10:33:00 IST" "2016-04-02 22:19:00 IST" 
# "2016-04-09 17:47:00 IST" "2016-04-13 16:56:00 IST" 

# without timezone 
format(substring(datetimes, 1, nchar(datetimes[1])-7), 
       format='%Y-%m-%d %H:%M:%S', usetz = FALSE) 
#[1] "2016-04-02 10:33" "2016-04-02 22:19" "2016-04-09 17:47" "2016-04-13 16:56" 
+1

Chuỗi múi giờ được hiển thị không dẫn đến sự tự tin ở đây. –

+0

ok cập nhật theo yêu cầu của bạn –

1

bạn có thể sử dụng round.POSIXt:

round(Sys.time(), units = "mins") 
#"2017-01-30 11:20:00 CET" 
+0

Nếu bạn sử dụng chức năng này để thao tác một data.frame bạn cần thêm as.POSIXct để loại bỏ cấu trúc danh sách –

0

này là những gì bạn có:

x <- structure(c(1459589625, 1459631964, 1460220433, 1460562983), 
    class = c("POSIXct", "POSIXt"), tzone = "") 

Đây là những gì bạn muốn:

x <- format(as.POSIXct(x), "%d-%m-%Y %H:%M") 
x 

[1] "02-04-2016 15:03" "03-04-2016 02:49" "09-04-2016 22:17" "13-04-2016 21:26" 
Các vấn đề liên quan