2017-10-05 51 views
0

使用lubridate包我想添加秒(爲示例的目的)在一個tibble的"POSIXct", "POSIXt"字段。dplyr/lubridate mutate_impl錯誤添加日期時間

b <- structure(list(`"a"` = c("a", "a", "a", "a", "a"), Date_time = structure(c(1506694322, 
1506694270, 1506693970, 1506693897, 1506693849), class = c("POSIXct", 
"POSIXt"), tzone = "")), .Names = c("\"a\"", "Date_time"), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -5L)) 

b %>% 
    mutate(tol_lower = Date_time - second(2), 
     tol_lower = Date_time + second(30)) 

我得到的錯誤:

Error in mutate_impl(.data, dots) : 'origin' must be supplied 

這是爲什麼?我很欣賞我可以計算幾個小時,但我想知道我做錯了什麼。

附加點:

-I've試圖as.Date,可以得到相同的錯誤。

-I可以直接添加秒沒有問題:tol_lower = Date_time - 2

回答

0

Whyn't使用?

b %>% mutate(tol_lower = Date_time - 2, 
      tol_upper = Date_time + 30) 

如果你想要小時添加到給定的日期,然後簡單地使用Date_time + 2*60*60(即,2個小時內加入Date_time)。


此外?second明確表示,xsecond(x)是「日期時間對象」,但在你的情況,你試圖傳遞一個整數。

希望它有幫助!