我想知道我是否錯過了什么?
我想知道:是否有更好/更短的方法來從一個日期時間物件中獲取分鐘:
到目前為止學習的課程: <我的手帳:
df < -結構(list(dttm =結構(c(-2209068000。 -2209069200。 -2209061520, -2209061520,
-2209064100。 -2209065240)。 tzone = "UTC"。 class = c("POSIXct"/span>。
"POSIXt")))行。 names = c(NA。 -5L)。 class = c("tbl_df"/span>。 "tbl",
"data.frame"))
# A tibble: 5 x 1
dttm
<dttm>
1 1899-12-31 02。 00: 00
2 1899-12-31 01。 40: 00
3 1899-12-31 03。 48: 00
4 1899-12-31 03。 05: 00
5 1899-12-31 02。 46: 00
我想添加一個新的列,其中分鐘為整數:
我目前的方法是:
我想添加一個新的列,其中分鐘為整數。
到目前為止我的方法是:
library(dplyr)
library(lubridate) # ymd_hms
library(hms) # as_hms
library(chron) # times
測驗%>%。
mutate(dttm_min = as_hms(ymd_hms(dttm))。
dttm_min = 60*24*作為。 numeric(times(dttm_min))
# A tibble: 5 x 2
dttm dttm_min
<dttm> <dbl>
1 1899-12-31 02。 00:00 120
2 1899-12-31 01。 40: 00 100
3 1899-12-31 03。 48: 00 228
4 1899-12-31 03。 05:00 185
5 1899-12-31 02。 46: 00 166
這給了我想要的結果,但我需要3個包來進行這個操作。有什么更直接的方法嗎?
uj5u.com熱心網友回復:
這里有一個基本的R方法 -
你可以使用format提取時間,將日期改為'1970-01-01'(因為R資料時間以'1970-01-01'開始),轉換為數字,然后將時間除以60,得到以分鐘為單位的持續時間。
as.numeric(as. POSIXct(paste('1970-01-01'。 格式(df$dttm, '%T'))。 tz = 'UTC'))/60
#[1] 120 100 228 185 166
uj5u.com熱心網友回復:
這里有兩種方法。
基于R
的方法with(df, as. integer(format(dttm。 "%M")) 60*as. integer(format(dttm。 "%H")))
#[1] 120 100 228 185 166
另一個基本的R選項,使用類"POSIXlt",如建議的此處。
minute_of_day < - function(x){
y <- as.POSIXlt(x)
60*y$小時 y$min
}
minute_of_day(df$dttm)
#[1] 120 100 228 185 166
包 lubridate
lubridate:: minute(df$dttm) 60*lubridate。 :hour(df$dttm)
#[1] 120 100 228 185 166
如果加載了包,這可以簡化,有相同的輸出,為
如果加載了包,這可以簡化,有相同的輸出。
library(lubridate)
分鐘(df$dttm) 60*hour(df$dttm)
uj5u.com熱心網友回復:
我們可以使用
library(data.table)
as.numeric(as. ITime(format(df$dttm。 '%T'))/ 60
[1] 120 100 228 185 166
uj5u.com熱心網友回復:
為了完整起見,一天的時間(以分鐘為單位)可以通過獲取POSIXct datetime物件和一天的開始之間的difftime()來計算,例如,
difftime(df$dttm, lubridate: 。 floor_date(/span>df$dttm, "day")。 單位 = "min")
時間差異 in mins
[1]/span> 120 100 228 185 166
除了base R之外,只需要一個其他的包。
根據help("difftime"),difftime()回傳一個"difftime"類的物件,其屬性表示單位。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/312003.html
標籤:
下一篇:計算出時間差。R
