国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - R語言 - R語言與格式,日期格式,格式轉化的操作

R語言與格式,日期格式,格式轉化的操作

2022-01-07 15:11悟乙己 R語言

這篇文章主要介紹了R語言與格式,日期格式,格式轉化的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

R語言的基礎包中提供了兩種類型的時間數據,一類是Date日期數據,它不包括時間和時區信息,另一類是POSIXct/POSIXlt類型數據,其中包括了日期、時間和時區信息。

 

基本總結如下:

日期data,存儲的是天;

時間POSIXct 存儲的是秒,POSIXlt 打散,年月日不同;

日期-時間=不可運算。

一般來講,R語言中建立時序數據是通過字符型轉化而來,但由于時序數據形式多樣,而且R中存貯格式也是五花八門,例如Date/ts/xts/zoo/tis/fts等等。lubridate包(后續有介紹,應用四),timeDate包,都有用。

常見的格式:

as.numeric 轉化為數值型
as.logic 轉化為邏輯型
as.complex 轉化為復數型
as.character 轉化為字符型
as.array 轉化為數組
as.data.frame 轉化為數據框
d<-as.character(z) #將數值向量z<-(0:9)轉化為字符向量c("0", "1", "2", ..., "9")。  
as.integer(d)         #將d轉化為數值向量  
e <- numeric()     #產生一個numeric型的空向量e  
a=data.frame(a)  #變成R的數據框  
factor()               #變成因子  可以用levels()來看因子個數  

在data.frame中,是可以實現數據集重命名的,比如data.frame(x=iris,y=cars),

也可以實現橫向、縱向重命名,data.frame(x=iris,y=cars,row.names=iris)

 

后續加更內容

應用1――如何通過生日計算年齡

應用2――日期分組

應用三――生成按天的時間序列并進行回歸

應用四:靈活處理時間數據―lubridate包(來源TipDM)

應用五:如何在循環、函數中,輸出實時時間消耗?

時間的標準格式

mydate = as.POSIXlt('2005-4-19 7:01:00')
names(mydate)

默認情況下,日期之前是以/或者-進行分隔,而時間則以:進行分隔;

輸入的標準格式為:日期 時間(日期與時間中間有空隔隔開)

時間的標準格式為:時:分 或者 時:分:秒;

如果輸入的格式不是標準格式,則同樣需要使用strptime函數,利用format來進行指定。

 

一、日期型數據――data

1、as.Data函數

在R中自帶的日期形式為:as.Date();以數值形式存儲;

對于規則的格式,則不需要用format指定格式;如果輸入的格式不規則,可以通過format指定的格式讀入;其中以1970-01-01定義為第0天,之后的年份會以距離這天來計算。

> x<-as.Date("1970-01-01") 
> unclass(x) 
[1] 0
> 
> unclass(as.Date("1970-02-01")) #19700201代表第31天
[1] 31

代碼解讀:unclass可以將日期變成以天來計數,比如1970-02-01輸出的31,就代表著距離1970-01-01有31天。

as.data中的參數格式:年-月-日或者年/月/日;如果不是以上二種格式,則會提供錯誤――錯誤于charTo按照Date(x) : 字符串的格式不夠標準明確;

例如這樣的數據格式,就常常報錯。

19:15.

顯示為:2011/1/1 19:15

as.Date('23-2013-1',format='%d-%Y-%m')  
#其中這個%d%Y可以節選其中一個
#%Y%y  大寫代表年份四位數,小寫代表年份二位數,要注意

2、%d%y%m-基本格式

格式

意義

%d

月份中當的天數

%m

月份,以數字形式表示

%b

月份,縮寫

%B

月份,完整的月份名,指英文

%y

年份,以二位數字表示

%Y

年份,以四位數字表示

#其它日期相關函數

weekdays()取日期對象所處的周幾;

months()取日期對象的月份;

quarters()取日期對象的季度。

 

二、時間型――POSIXct與POSIXlt

POSIXct 是以1970年1月1號開始的以秒進行存儲,如果是負數,則是1970-01-01年以前;正數則是1970年以后。

POSIXlt 是以列表的形式存儲:年、月、日、時、分、秒,作用是打散時間;

1、POSIXlt 格式

主要特點:作用是打散時間,把時間分成年、月、日、時、分、秒,并進行存儲。

可以作為時間篩選的一種。

> today<-Sys.time()
> unclass(as.POSIXlt(today))
$sec
[1] 53.27151

$min
[1] 38

$hour
[1] 20

$mday
[1] 6

$mon
[1] 5

$year
[1] 116

$wday
[1] 1

$yday
[1] 157

$isdst
[1] 0

$zone
[1] "CST"

$gmtoff
[1] 28800

attr(,"tzone")
[1] ""    "CST" "CDT"

代碼解讀:unclass將時間打散。

2、POSIXct 格式

主要特點:以秒進行存儲。

> today<-Sys.time()
> today
[1] "2016-06-06 20:42:22 CST"
> unclass(as.POSIXct(today))
[1] 1465216942

解讀:比如今天,unclass之后,代表今天2016-06-06距離1970-01-01為1465216942秒。

#GMT代表時區,德意志時間,CST也代表時區

 

三、時間運算

1、基本運算函數

Sys.Date()                 #字符串類型
typeof(Sys.Date())   #系統日期類型

2、直接加減

相同的格式才能相互減,不能加。二進列的+法對"Date"、"POSIXt"對象不適用。

> as.Date("2011-07-01") - as.Date(today)
Time difference of -1802 days
> as.POSIXct(today)-as.POSIXct(as.Date("2012-10-25 01:00:00"))
Time difference of 1320.529 days
> as.POSIXlt(today)-as.POSIXlt(as.Date("2012-10-25 01:00:00"))
Time difference of 1320.529 days

相互減之后,一般結果輸出的天數。

3、difftime函數――計算時差

不同格式的時間都可以進行運算。并且可以實現的是計算兩個時間間隔:秒、分鐘、小時、天、星期。

但是不能計算年、月、季度的時間差。

gtd <- as.Date("2011-07-01") 
difftime(as.POSIXct(today), gtd, units="hours")    #只能計算日期差,還可以是“secs”, “mins”, “hours”, “days”

4、format函數――提取關鍵信息

> today<-Sys.time()
> format(today,format="%B-%d-%Y")
[1] "六月-06-2016"

format函數可以將時間格式,調節成指定時間樣式。format(today,format="%Y")其中的format可以自由調節,獲取你想要的時間信息。

并且format函數可以識別as.Data型以及POSIXct與POSIXlt型,將其日期進行提取與之后要討論的split類型。

> today<-Sys.time()
> format(as.Date(today),format="%Y")
[1] "2016"
> format(as.POSIXlt(today),format="%Y")
[1] "2016"
> format(as.POSIXct(today),format="%Y")
[1] "2016"

但是format出來的時間不能直接做減法,會出現錯誤: non-numeric argument to binary operator

5、strptime函數

該函數是將字符型時間轉化為 "POSIXlt" 和"POSIXct"兩類。跟format比較相似。

strptime之后的時間是可以直接做減法,因為直接是"POSIXlt" 和"POSIXct"格式了。

> strptime("2006-01-08 10:07:52", "%Y-%m-%d")-strptime("2006-01-15 10:07:52", "%Y-%m-%d")
Time difference of -7 days
> class(strptime("2006-01-08 10:07:52", "%Y-%m-%d"))
[1] "POSIXlt" "POSIXt"

 

四、遇見的問題

1、常常報錯。

錯誤于charTo按照Date(x) : 字符串的格式不夠標準明確。這個錯誤經常出現,我本來的數據格式是

19:15.

后來換成“2011/1/1”這樣的就不會報錯了,需要數據庫自動改變。

#幾種錯誤匯總
dtV<-data.frame(as.POSIXct(a$b,format="%d.%m.%Y")) #錯,讀出來都是NA
as.Date(a$b, "%Y年%m月%d日")  #錯,讀不出來
as.POSIXct(strptime(a$b, "%Y-%m-%d"))  #讀不出來

#轉化成xts格式也讀不出來
install.packages("xts")
library(xts)
as.xts(read.zoo("time.csv",header=T))
a <- as.xts(a, descr='my new xts object')
as.xts(read.zoo("a.csv",header=T))
#錯

#轉化成數值型也不對
c=as.numeric(sales[,2]) 

2、excel另存為csv時發生的錯誤。

一位網友說:我以前是在excel里另存為csv格式,百度上說CSV檔如果以EXCEL開啟,由于計算機檔案數據轉換的原因,會將其CRC之數值改做科學記號方式儲存,而造成檔案中的 CRC值發生錯誤。

 

應用1――如何通過生日計算年齡

1、format函數

timeformat<-function(x){
format(as.POSIXct(x),format="%Y")
}
sapply(as.Date(data$birthdate),timeformat)

format只能一個一個操作,可以先寫成函數,然后計算得出年份,之后用如今的年份相減得到年齡。

2、字符型――strsplit

先轉化為字符型,然后進行分割。

data.frame(sapply(as.character(data$birthdate),function(x){strsplit(x,"-")[[1]][1]}))

注意,其中strsplit中的"-",根據具體時間格式情況來定義。

 

應用2――日期分組

一種按照日期范圍――例如按照周、月、季度或者年――對其進行分組的超簡便處理方式:R語言的cut()函數。

假設vector中存在以下示例數據:

vDates <- as.Date(c("2013-06-01", "2013-07-08", "2013-09-01", "2013-09-15")) #as.Data()函數的作用非常重要;如果沒有它,R語言會認為以上內容僅僅是數字串而非日期對象
[1] "2013-06-01" "2013-07-08" "2013-09-01" "2013-09-15" 
vDates.bymonth <- cut(vDates, breaks = "month") 
[1] 2013-06-01 2013-07-01 2013-09-01 2013-09-01
Levels: 2013-06-01 2013-07-01 2013-08-01 2013-09-01
Dates <- data.frame(vDates, vDates.bymonth) 

 

應用三――生成按天的時間序列并進行回歸

如果是生成簡單的年度,月度數據,ts函數可以滿足,但是如果生成的是每天。因為有閏年緣故,所以zoo包可以很好地解決這個問題。

還有筆者在做一個簡單的時間序列回歸時候,疑惑:

做關于時間序列的ols最小二乘法回歸方程,按年來好說,但是如果是按天,如果進行計算呢?

1、把天變成一排規律遞增的數字來代替;

2、ts函數變化之后,也是變成一個遞增的數字。

以上兩種,做的結果都一樣,所以沒有什么太大的區別。

關于ts函數by day每一天的時間序列生成,該如何呢?

n=30
t<-ts(1:n,frequency=1,start=as.Date("2010-01-09"))

生成一個按天的時間序列。

應用四:靈活處理時間數據―lubridate包(來源TipDM)

lubridate包是由Garrett Grolemund 和 Hadley Wickham寫的,可以靈活地處理時間數據。lubridate包主要有兩類函數,一類是處理時點數據(time instants),另一類是處理時段數據(time spans)。

1、時點類函數

主要包括解析、抽取、修改。

R語言與格式,日期格式,格式轉化的操作

R語言與格式,日期格式,格式轉化的操作

2、時段類函數

可以處理三類對象,分別是:

interval:最簡單的時段對象,它由兩個時點數據構成。

duration:去除了時間兩端的信息,純粹以秒為單位計算時段的長度,不考慮閏年和閏秒,它同時也兼容基本包中的difftime類型對象。

period:以較長的時鐘周期來計算時段長度,它考慮了閏年和閏秒,適用于長期的時間計算。以2012年為例,duration計算的一年是標準不變的365天,而period計算的一年就會變成366天。

有了時點和時段數據,就可以進行各種計算了。

R語言與格式,日期格式,格式轉化的操作

R語言與格式,日期格式,格式轉化的操作

3、時區信息

lubridate包提供了三個函數:

tz:提取時間數據的時區

with_tz:將時間數據轉換為另一個時區的同一時間

force_tz:將時間數據的時區強制轉換為另一個時區

R語言與格式,日期格式,格式轉化的操作

 

應用五:如何在循環、函數中,輸出實時時間消耗?

想知道循環中進行到哪里?這樣可以合理安排函數進程。那么怎么辦呢?

第一辦法:使用Rstudio 1.0版本,里面有一個Profiling with profvis,可以很好的對你函數每一步的耗時進行參看。

RRstudio 1.0版本嘗鮮(R notebook、下載鏈接、sparkR、代碼時間測試profile)

當然,這個不能實時輸出內容。

第二辦法:利用difftime函數

t1 = Sys.time()
for (i in 1:5){
a=a+1
b=a*a
print(difftime(Sys.time(), t1, units = 'sec'))
}

先預設當前時間,然后用difftime+print方式,循環輸出。

 

應用六:因子型數據轉化為數值型

因子型轉化的時候會發現,譬如10000這個數字,會變為6,也就是因子型里面對應的次序,這樣并不是我們想要的。所以,可以先變為字符型as.character:

as.numeric(as.character(data))

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://mattzheng.blog.csdn.net/article/details/50677065

延伸 · 閱讀

精彩推薦
  • R語言R語言gsub替換字符工具的具體使用

    R語言gsub替換字符工具的具體使用

    這篇文章主要介紹了R語言gsub替換字符工具的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    lztttao10372021-12-24
  • R語言R語言常量知識點總結

    R語言常量知識點總結

    在本篇文章里小編給大家整理了一篇關于R語言常量知識點總結內容,有興趣的朋友們可以學習分享下。...

    R語言教程網12102021-12-29
  • R語言如何用R語言繪制散點圖

    如何用R語言繪制散點圖

    這篇文章主要介紹了如何用R語言繪制散點圖,幫助大家更好的理解和學習使用R語言,感興趣的朋友可以了解下...

    菜鳥教程13002021-12-23
  • R語言R語言中qplot()函數的用法說明

    R語言中qplot()函數的用法說明

    這篇文章主要介紹了R語言中qplot()函數的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    Jack_丁明12752022-01-05
  • R語言R語言讀取xls與xlsx格式文件過程

    R語言讀取xls與xlsx格式文件過程

    這篇文章主要為大家介紹了使用R語言讀取xls與xlsx格式文件的過程步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪...

    Kanny廣小隸11982022-01-20
  • R語言R語言中的vector(向量),array(數組)使用總結

    R語言中的vector(向量),array(數組)使用總結

    這篇文章主要介紹了R語言中的vector(向量),array(數組)使用總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要...

    A葉子葉來5772021-11-14
  • R語言R語言實現支持向量機SVM應用案例

    R語言實現支持向量機SVM應用案例

    本文主要介紹了R語言實現支持向量機SVM應用案例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    一天_pika5222022-01-18
  • R語言基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案

    基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案

    這篇文章主要介紹了基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    truffle52815052022-01-05
主站蜘蛛池模板: 午夜精品成人一区二区 | 色爽 | 精品亚洲一区二区三区四区五区 | 99精品国产高清在线观看 | 久久久精品综合 | 一级黄色片日本 | 激情综合五月 | 国产亚洲精品久久久久动 | 亚洲精品国产区欧美区在线 | 精品一级 | 亚洲精品久久久久久久久久吃药 | 色婷婷综合久久久中文字幕 | 韩日av在线| 国产欧美日韩综合精品 | 色8888www视频在线观看 | 四虎小视频 | 国产乱码久久久久久一区二区 | 欧美成人精品激情在线观看 | 欧美日韩视频一区二区 | 精品一区二区久久久久久久网站 | 精品国产一二三区 | 日韩影音 | 久久精品久久久 | 亚洲免费观看在线视频 | 国产精品1区2区3区 久久免费一区 | 自拍偷拍五月天 | 亚洲精品视频网 | 色婷婷激情综合 | 成人午夜视频在线观看 | 欧美大片在线观看 | 欧美国产精品一区二区三区 | 天天插狠狠插 | 国产精品毛片在线 | 久久久久久久一区 | 国产成人毛片 | 久久精品91 | 亚洲三区视频 | 亚洲精品久久久久久久久久久久久 | 国产精品久久久久无码av | 国产在线中文字幕 | 免费高清黄色 |