R語言中如何處理時間格式

2021-09-10 12:47:56 字數 4167 閱讀 2290

#將字串轉換為時間

d=as.date(

"2015-5-6") d

#獲取月份

months(d)

#獲取星期

weekdays(d)

結果:

> d

[1]"2015-05-06"

> months(d)

[1]"五月"

> weekdays(d)

[1]"星期三"

如何提取季節,月份,使用lubridate包

年份:== year(datae)==

月份: month(datae)

日期:== day(datae)==

季節:== quarter(datae)==

還有其他有用的函式

**

library(lubridate)

d<-c(

"2012-1-10","2013-5-9","2014-6-25"

)year(d)

month(d)

day(d)

quarter(d)

結果

> library(lubridate)

> d<-c(

"2012-1-10","2013-5-9","2014-6-25"

)> year(d)

[1] 2012 2013 2014

> month(d)

[1] 1 5 6

> day(d)

[1] 10 9 25

> quarter(d)

[1] 1 2 2

hms包,用於儲存和格式化時間,基於difftime型別,使用s3的物件導向資料結構。

函式列表:

hms: 建立乙個hms型別物件

is.hms: 判斷是否是hms型別

parse_hm: 解析hm值

parse_hms: 解析hms值

round_hms:四捨五入對齊

trunc_hms:裁剪對齊

as.hms: hms泛型函式,s3型別,用於隱式呼叫它的繼承函式

as.hms.character: character轉型hms,用於as.hms的繼承呼叫

as.hms.default: hms轉型hms,用於as.hms的繼承呼叫

as.hms.difftime:difftime轉型hms,用於as.hms的繼承呼叫

as.hms.numeric: numeric轉型hms,用於as.hms的繼承呼叫

as.hms.posixlt: posixlt轉型hms,用於as.hms的繼承呼叫

as.hms.posixt: posixt轉型hms,用於as.hms的繼承呼叫

as.character.hms: hms轉型character,用於as.character的繼承呼叫

as.data.frame.hms: hms轉型data.frame,用於as.data.frame的繼承呼叫

as.posixct.hms: hms轉型posixct,用於as.posixct的繼承呼叫

as.posixlt.hms: hms轉型posixlt,用於as.posixlt的繼承呼叫

format.hms: 格式化hms,用於format的繼承呼叫

print.hms: 列印hms對像,用於print的繼承呼叫

從函式列表可以看到,hms包的功能很單一,就在做資料型別和資料變型,是底層的資料結構包,設計思路與zoo包的設計思路一致。

hms包中,有大量的as.***()函式、format.hms()函式和print.hms()函式,是被用於s3型別函式繼承呼叫的,是不需要我們在寫程式的時候顯示呼叫的。

例如:

hms()函式,用於建立乙個hms型別的物件。

函式定義:

hms(seconds = null, minutes = null, hours = null, days = null)
hms()函式,接收4個引數,分別對應秒,分,時,日。

建立hms物件

建立12:34:56的時間物件

a1<-hms(56, 34, 12);a1

12:34:56

建立 10日12:34:56的時間物件

a2<-hms(56, 34, 12,10);a2

252:34:56

列印結果的第一位252=10*24+12。

== 把字串轉hms==

as.hms('19:13:14')

19:13:14

非法時間字串轉型

as.hms('19:78:14')

na

as.***.hms:把hms轉型到其他型別

預設轉型

as.hms(a1)

12:34:56

hms轉型character,實際會隱式呼叫as.character.hms()函式

as.character(a1)

[1] "12:34:56"

hms轉型posixct

as.posixct(a1)

[1] "1970-01-01 12:34:56 utc"

hms轉型posixlt

as.posixlt(a1)

[1] "1970-01-01 12:34:56 utc"

parse_hms對字串進行轉型,對比parse_hms()與as.hms()結果一樣的。

執行parse_hms

parse_hms("12:34:56.789")

12:34:56.789

as.hms("12:34:56.789")

12:34:56.789

執行parse_hm

parse_hm("12:34")

12:34:00

as.hms("12:34")

na

round_hms()函式,是把時間進行四捨五入對齊。

按秒,以5的倍數進行對齊,四捨五入

round_hms(as.hms("12:34:51"), 5)

12:34:50

round_hms(as.hms("12:34:54"), 5)

12:34:55

round_hms(as.hms("12:34:56"), 5)

12:34:55

round_hms(as.hms("12:34:59"), 5)

12:35:00

按秒,以60的倍數對齊

round_hms(as.hms("12:34:56"), 60)

12:35:00

trunc_hms()函式,是把時間進行裁剪對齊。

按秒去掉末位,以5的倍數進行對齊

trunc_hms(as.hms("12:34:01"), 5)

12:34:00

trunc_hms(as.hms("12:34:44"), 5)

12:34:40

trunc_hms(as.hms("12:34:56"), 60)

12:34:00

生成時間序列

seq(as.date("2015-02-01"), length=19, by="month")

[1] "2015-02-01" "2015-03-01" "2015-04-01" "2015-05-01" "2015-06-01" "2015-07-01"

[7] "2015-08-01" "2015-09-01" "2015-10-01" "2015-11-01" "2015-12-01" "2016-01-01"

[13] "2016-02-01" "2016-03-01" "2016-04-01" "2016-05-01" "2016-06-01" "2016-07-01"

[19] "2016-08-01"

可以參考:

python時間如何處理 python 時間處理

time模組 獲取時間 time.time 獲取當前時間的時間戳 time.strftime y m d h m s 獲取格式化後的字元 type str time.localtime 獲取元組形式的時間 time.gmtime 將時間轉換成utc格式的元組格式時間 importtimeprint ...

R語言中的並行處理

網上有人說foreach包可以並行,我就去弄了,結果發現乙個普通的二重迴圈什麼事都不錯都很卡!搗鼓了半天才發現是foreach的問題 為了提速,做了如下事宜 計算trustl r.trust matrix matrix rep 0,r.item count r.user count nrow r.u...

R語言中的時間與日期

r 中的日期與時間 一 儲存格式 r中的三種日期儲存格式分別為posixct,posixlt和date格式,三種格式之間可以使用as.posixct,as.posixlt,as.date進行互換。如果不指定格式,as.date將會輸出乙個 y m d形式的的date 注意,sys.time返回的是乙...