R語言日期資料處理

2021-08-19 08:06:05 字數 3984 閱讀 2964

在處理一些資料中,我經常遇到一些日期資料,今天就來說說對於不同格式的日期資料該怎麼處理。下面是一些常用來處理的函式。

as.date(x, ...)## s3 method for class 'character'

as.date(x, format, ...)## s3 method for class 'numeric'

as.date(x, origin, ...)## s3 method for class 'posixct'

as.date(x, tz = "utc", ...)

as.posixct(x, tz = "", ...)

as.posixlt(x, tz = "", ...)## s3 method for class 'character'

as.posixlt(x, tz = "", format, ...)## s3 method for class 'numeric'

as.posixlt(x, tz = "", origin, ...)

strftime(x, format = "", tz = "", usetz = false, ...)

strptime(x, format, tz = "")

處理時間資料一般會用到as.date,as.posixct,strptime函式,x就是日期資料,另外比較重要的引數就是format,origin,tz。format指日期格式;origin指時間起點,比如處理unix時間戳,下面會有介紹;tz指時區,我們位於東八區,使用的是北京時間,簡稱cst。

format引數詳解

format引數可以說是最重要的引數,它看起來比較簡單,類似%y%m%d的樣子,它用來指定日期格式,但除了y,m,d之前還有許多引數,下面我簡單介紹一下。

(左右可以滑動)

引數含義

%a當天為星期幾,簡稱

%a當天為星期幾,全稱

%b月份為英文簡稱

%b月份為英文全稱。其實和%b用起來有時候沒差別

%c以「星期 月 日 時:分:秒 年"的格式輸出

%c輸出年份的前兩位,比如2018輸出20。

%d輸出日,01-31。比如2018-03-02輸出02

%d以月/天/年的格式輸出

%e輸出日,1-31。比如2018-03-02輸出2

%f等價於 %y-%m-%d,輸出日期

%g輸出年的後兩位,比如2006-01-08輸出06

%g輸出年份,比如2006-01-08輸出2006

%h等價於%b

%h小時,00-23

%i小時,01-12

%j一年的天數,001-366

%m月數,01-12

%m分鐘數,00-59

%p只輸出am/pm,判斷上午還是下午

%r以12小時制輸出時間,並且輸出am/pm

%r等價於%h:%m

%s輸出秒

%t輸出等價於%h:%m:%s。

%u判斷星期幾,1-7,1代表星期一,也可以代表一周中的第幾天

%u判斷是今年第幾周,00-53。星期天作為一周的第一天

%w星期幾,取值為0-6,0代表星期日·

%w判斷是今年第幾周,00-53。星期一作為一周的第一天

%x以 月/日/年格式輸出時間

%x以 時/分/秒的格式輸出時間

%y表示年份的後兩位,0-68前兩位用19補充,69-99前兩位用20補充,比如02/27/92表示2023年

%y表示年,取值0-9999

%z與utc時間偏移

%z輸出時區簡稱

現在來舉幾個例子來看看。

> as.date("01-jan-1995","%d-%b-%y")

[1] "1995-01-01"

> as.date("01-jan-1995","%d-%b-%y")

[1] "1995-01-01"

> strftime("2006-01-08 15:07:52","%h") #以24小時制提取小時

[1] "15"

> strftime("2006-01-08 15:07:52","%i") #以12小時制提取小時

[1] "03"

> strftime("2018/02/28","%x") #時/分/秒的格式輸出時間

[1] "02/28/18"

> strptime("02/27/92","%m/%d/%y")

[1] "1992-02-27 cst"

> strftime("2018-2-26","%a") #輸出星期幾

[1] "monday"

下面附上12個月的英文單詞和簡寫,順便溫習一下12個月的單詞怎麼寫,哈哈!

月份英文

簡稱月份

英文簡稱

一月january

jan七月

july

jul二月

february

feb八月

august

aug三月

march

mar九月

september

sep四月

april

apr十月

october

oct五月

maymay

十一月november

nov六月

june

jun十二月

december

decorigin引數詳解

我們來建舉乙個簡單的例子,有些日期資料是以unix時間戳的形式來記錄的。時間戳是自2023年1月1日(00:00:00 gmt)以來的秒數。它也被稱為unix時間或unix時間戳。在處理時間戳資料可以使用as.posixct()函式。網上也有許多**可以轉。而as.posixlt是用列表來表示時間,時間的每一部分都是列表的乙個元素。廢話不多說,直接來看例子。

#878887116就是乙個unix時間戳

> as.posixct(878887116,origin="1970-01-01") # 處理時間戳 cst表示北京時間。

[1] "1997-11-07 15:18:36 cst"

> tc1<-as.posixct("2018-2-28")##求時間差,不滿足加法

> tc2<-as.posixct("2018-2-26")

> tc1-tc2

time difference of 2 days

> al<-as.posixlt("2018-2-26") ##as.posixlt以列表來表示時間

> unlist(al)

sec    min   hour   mday    mon   year   wday   yday  isdst   zone gmtoff

"0""0""0"

"26"

"1""118"

"1""56"

"0""cst"

na> unclass(al)##也可以用unclass檢視

檢視。說到最後,如果你在做時間轉換一直結果都是na的話,試試輸入sys.setlocale("lc_time","c")再轉化看看結果如何。

後來在網上查閱之後,發現有專門用來做時間處理的包—lubridata和timedate,我想用它的話對時間資料處理就會更方便,如果用這些函式處理麻煩的話再看看那兩個包。

python時間日期資料處理

匯入相關庫 import pandas as pd import numpy as np import time import datetime import matplotlib.pyplot as plt 解決座標軸刻度負號亂碼 plt.rcparams axes.unicode minus f...

R 資料處理

setwd e rwork set.seed 1234 index sample 1 nrow iris 10,replace t index sample set iris index,index sample nrow iris 0.75 nrow iris sample set iris in...

R語言 資料處理 R做資料處理中的小技巧

一 主要內容 建立新變數 修改資料 修改變數名 處理缺失值 資料排序 資料合併 資料篩選 抽樣二 r語言 rm list ls gc manager c 1,2,3,4,5 date c 10 24 08 10 28 08 10 1 08 10 12 08 5 1 09 country c us u...