在處理一些資料中,我經常遇到一些日期資料,今天就來說說對於不同格式的日期資料該怎麼處理。下面是一些常用來處理的函式。
處理時間資料一般會用到as.date,as.posixct,strptime函式,x就是日期資料,另外比較重要的引數就是format,origin,tz。format指日期格式;origin指時間起點,比如處理unix時間戳,下面會有介紹;tz指時區,我們位於東八區,使用的是北京時間,簡稱cst。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 = "")
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輸出時區簡稱
現在來舉幾個例子來看看。
下面附上12個月的英文單詞和簡寫,順便溫習一下12個月的單詞怎麼寫,哈哈!> 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"
月份英文
簡稱月份
英文簡稱
一月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...