操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    博客網(wǎng)址:

    任何問題和建議,請?jiān)诓┛驮u(píng)論區(qū)或公眾號(hào)留言

    最近更新時(shí)間:2018-9-26

    寫在前面

    上次更新后已經(jīng)有將近三個(gè)月沒有進(jìn)行文章更新,所以這里要向那些一直關(guān)注小編文章的朋友致以最誠摯的抱歉。因?yàn)樵谶@三個(gè)月中一些瑣事以及工作方面的事情一直纏繞著我,使得我總是沒有精力或者心情去及時(shí)進(jìn)行文章更新c語言轉(zhuǎn)移記事本內(nèi)容,再次向喜歡小編文章的各位朋友進(jìn)行道歉!這也讓小編感覺到一個(gè)人堅(jiān)持做一件事情是多么的困難。我一直覺得自己還算是具有一種比較能夠堅(jiān)持的性格,然而實(shí)踐證明,堅(jiān)持總是說著容易。在反思了這段時(shí)間之后,小編決定在接下來的文章更新中盡量做到每周都有更新,不過每周更新的頻率將有所調(diào)整,小編會(huì)盡量做到每周兩更,然而考慮到工作人士的身不由己,一周一更也將成為一種常態(tài),但是小編會(huì)保證每周都至少會(huì)有一篇文章更新,以感激你們這群長期支持小編的朋友。可能太久沒有寫文章了,所以一時(shí)間有點(diǎn)話癆,下面開始介紹一下本期的主題。本期文章中,小編將和大家介紹一下怎么使用R語言去進(jìn)行數(shù)據(jù)的清洗以及規(guī)整。因?yàn)槿魏涡问降臄?shù)據(jù)分析都離不開數(shù)據(jù)清洗,可以說數(shù)據(jù)清洗整理占據(jù)了整個(gè)數(shù)據(jù)分析工作時(shí)間的80%,因此小編一直以來就極為重視這一點(diǎn)。長久以來小編一直使用和R進(jìn)行數(shù)據(jù)分析,所以小編不可能只介紹R語言的數(shù)據(jù)清洗過程,也會(huì)介紹怎么使用去進(jìn)行同類型的數(shù)據(jù)清洗工作,因?yàn)閿?shù)據(jù)清洗真的比較重要,所以這期文章只介紹怎么使用R語言去進(jìn)行數(shù)據(jù)清洗,下期文章介紹的處理過程。而本文選擇進(jìn)行清洗的數(shù)據(jù)來源于美國的UFO觀察數(shù)據(jù),考慮到數(shù)據(jù)將有80M的存量,這里就不將數(shù)據(jù)上傳了,需要的朋友請給小編發(fā)私信或者留言,小編會(huì)及時(shí)發(fā)給你們!好了,這里就不再多說廢話了,下面正式進(jìn)入主題。

    先觀察一下數(shù)據(jù)吧

    正如前面小編說過的一樣,數(shù)據(jù)集是一份存量為80M的固定分割文本文件(也就是tsv格式文件),因此使用記事本或者其他程序打開文件真的會(huì)需要一點(diǎn)時(shí)間(尤其是配置比較差的電腦更是如此),好在我們并沒有打算瀏覽全部數(shù)據(jù),我們僅僅需要觀察一下數(shù)據(jù)集的構(gòu)成與特征,所以這個(gè)時(shí)候直接使用命令行工具會(huì)顯得更加方便快捷。如果大家看過小編之前的文章,那么就應(yīng)該知道怎么去打開命令行工具(下存在兩種命令行工具:cmd和,打開的方式類似,win+R后輸入cmd或者分別打開這兩種形式的命令行;蘋果電腦下通過+空格鍵,然后輸入打開命令行終端)。這里小編選擇系統(tǒng)下的命令行工具進(jìn)行介紹。在打開命令行工具后,首先將路徑轉(zhuǎn)移到ufo數(shù)據(jù)所在的路徑,而后使用查看命令查看文件即可。在命令行窗口中輸入以下代碼完成查看。

    #?改變路徑到文件所在路徑,小編的文件存放在桌面,所以這里改變路徑到桌面
    cd?C:/Users/Administrator/Desktop/
    #?查看文件前五行內(nèi)容
    head?-5?ufo_awesome.tsv???#?記得可以使用tab鍵補(bǔ)全哈
    #?如果你的電腦是32位機(jī),上面的head命令可能正常運(yùn)行,然而如果你的電腦
    #?是64位機(jī)的話,你可能需要用下面的命令,這也是小編推薦的命令:
    Get-content?-First?5?.\ufo_awesome.tsv

    用c語言轉(zhuǎn)移記事本內(nèi)容_十五從軍征閱讀答案請?jiān)囍煤啙嵉恼Z言概括本詩的內(nèi)容_c語言浪漫內(nèi)容源代碼

    ufo數(shù)據(jù)文件查看

    通過前五行數(shù)據(jù)的觀察,我們了解了數(shù)據(jù)集中存在著六個(gè)字段(即數(shù)據(jù)集有六列)用c語言轉(zhuǎn)移記事本內(nèi)容,并且數(shù)據(jù)集沒有標(biāo)題行。進(jìn)一步觀察可以看出,前兩列數(shù)據(jù)為日期數(shù)據(jù),第三列數(shù)據(jù)為地點(diǎn),第四列數(shù)據(jù)為文本,第五列為歷時(shí)時(shí)間(文本),最后一列為文本。根據(jù)官方給出的數(shù)據(jù)介紹,這六列數(shù)據(jù)分別為UFO出現(xiàn)日期;UFO被報(bào)告日期;UFO出現(xiàn)地點(diǎn);對于本次UFO的簡短描述;UFO出現(xiàn)歷時(shí)時(shí)間;對于本次UFO的詳細(xì)描述。既然已經(jīng)知道了數(shù)據(jù)集的基本特征,那么下面就要開始使用R語言導(dǎo)入數(shù)據(jù)集進(jìn)入正式工作了。

    讀取UFO數(shù)據(jù)集

    通過前面的觀察,已經(jīng)知道數(shù)據(jù)集為固定分隔符文件,同時(shí)文件具有六列,并且沒有標(biāo)題行,因此下面需要用R語言去做的就是使用合適的文件讀取函數(shù)讀取文件,同時(shí)為數(shù)據(jù)集命名各列。這里小編的所有操作都是在中進(jìn)行。

    #?設(shè)置R語言的工作路徑為文件所在路徑
    setwd("C:/Users/Administrator/Desktop/")
    #?加載需要的包
    library(tidyverse)?#?用于數(shù)據(jù)清洗規(guī)整可視化等
    library(lubridate)??#?用于處理日期數(shù)據(jù)處理
    library(scales)????#?用于可視化時(shí)日期數(shù)據(jù)的格式化
    #?使用R語言中的read.delim()函數(shù)讀取文件
    ufo?<-?read.delim("ufo_awesome.tsv",
    ???????????????????header?=?FALSE,
    ???????????????????sep?=?"\t",
    ???????????????????stringsAsFactors?=?FALSE,
    ???????????????????na.strings?=?"")
    #?命名各列
    names(ufo)?<-?c("OccurDate",?"ReportDate","Location",?"ShortDescription","Duration",?"DetailDescription")
    #?查看數(shù)據(jù)
    head(ufo,n=5)

    查看數(shù)據(jù)

    可以看出數(shù)據(jù)已經(jīng)按照我們的想法組織成數(shù)據(jù)框了,不過總感覺這種組織不是太好看呀(后面會(huì)用另外一種組織方式),這里先來解釋一下其中的命令。read.delim()函數(shù)主要用來讀取固定分隔符文件,該函數(shù)的第一個(gè)參數(shù)就是文件路徑;因?yàn)槲募袥]有標(biāo)題行,所以這里使用=FALSE;sep="\t"用來指定文件中的分隔符,這里文件的分隔符為制表符;因?yàn)樵谧x取文件的過程中,R語言會(huì)將字符串轉(zhuǎn)換為因子,為了避免這種轉(zhuǎn)換,這里使用 = FALSE;最后的na. = ""參數(shù)則用來將文件中的空值替換成R語言中的標(biāo)準(zhǔn)空值NA。names()函數(shù)主要用來對數(shù)據(jù)集的各列進(jìn)行命名,這里不過多解釋。下面介紹另一種比較友好的組織數(shù)據(jù)形式。請輸入以下代碼將原始數(shù)據(jù)框轉(zhuǎn)化為.

    ufo?<-?as.tibble(ufo)
    #?因?yàn)閡fo數(shù)據(jù)集已經(jīng)對各列進(jìn)行命名了,所以這里不需要再次命名,
    #?如果你還沒有命名,則可以通過以下代碼進(jìn)行命名
    rename(ufo,"OccurDate"=V1,?"ReportDate"=V2,"Location"=V3,?"ShortDescription"=V4,"Duration"=V5,?"DetailDescription"=V6)
    #?看一下數(shù)據(jù)
    ufo

    c語言浪漫內(nèi)容源代碼_用c語言轉(zhuǎn)移記事本內(nèi)容_十五從軍征閱讀答案請?jiān)囍煤啙嵉恼Z言概括本詩的內(nèi)容

    我想不用我過多說明,你也會(huì)覺得這種組織方式更好看吧。既然已經(jīng)讀取了數(shù)據(jù),那么下面就需要進(jìn)行數(shù)據(jù)的清洗與規(guī)整了。主要要做到三點(diǎn):第一,將第一列和第二列轉(zhuǎn)為日期格式;第二,將地址列的數(shù)據(jù)拆分為城市和州,而不是放置在一起;第三,將歷時(shí)時(shí)間的數(shù)據(jù)單獨(dú)提取出來用于數(shù)據(jù)運(yùn)算。

    數(shù)據(jù)規(guī)整

    數(shù)據(jù)規(guī)整主要集中在三部分:日期格式轉(zhuǎn)換;城市與州分拆以及提取時(shí)間數(shù)據(jù),下面依次進(jìn)行介紹。

    日期格式轉(zhuǎn)換

    在R語言中存在著多種函數(shù)進(jìn)行日期數(shù)據(jù)的轉(zhuǎn)換,這里主要介紹R基礎(chǔ)包中的as.Date()函數(shù)和包。首先使用as.Date()函數(shù)來轉(zhuǎn)換第一列:

    ufo$OccurDate?<-?as.Date(ufo$OccurDate,format?=?"%Y%m%d")

    c語言浪漫內(nèi)容源代碼_十五從軍征閱讀答案請?jiān)囍煤啙嵉恼Z言概括本詩的內(nèi)容_用c語言轉(zhuǎn)移記事本內(nèi)容

    轉(zhuǎn)換錯(cuò)誤

    這里顯示出錯(cuò)了,沒法轉(zhuǎn)換,遇到這種情況千萬不要慌,好好看一下錯(cuò)誤信息,這里根據(jù)錯(cuò)誤信息知道,數(shù)據(jù)中存在著某些數(shù)據(jù)字符串過長從而無法轉(zhuǎn)換,所以必要重新審視一下數(shù)據(jù)。因?yàn)楦鶕?jù)轉(zhuǎn)換要求,需要轉(zhuǎn)換的數(shù)據(jù)應(yīng)該是具有8個(gè)字符的數(shù)據(jù)字符串,所以必須看一下那些長度不為8的字符串特征。你可以通過運(yùn)行以下代碼看一下存在多少不符合的行。

    good_rows?<-?ifelse(nchar(ufo$OccurDate)?!=?8?|
    ????????????????????nchar(ufo$ReportDate)?!=?8,
    ????????????????????FALSE,
    ????????????????????TRUE)
    length(which(!good_rows))?

    通過以上代碼,可以看出僅有688行不規(guī)則,對于6萬多條記錄來說,這里可以很瀟灑地將這些行剔除,僅保留其他數(shù)據(jù),見以下代碼:

    ufo?<-?ufo[good_rows,?]
    ufo$OccurDate?<-?as.Date(ufo$OccurDate,?format?=?"%Y%m%d")
    ufo$ReportDate?<-?as.Date(ufo$ReportDate,?format?=?"%Y%m%d")

    這里主要使用了as.Date()函數(shù)進(jìn)行日期轉(zhuǎn)換,當(dāng)然也存在著一個(gè)更加容易的進(jìn)行日期轉(zhuǎn)換的包,通過該包中的相關(guān)函數(shù)可以很便利地實(shí)現(xiàn)日期轉(zhuǎn)換,這里給出以上轉(zhuǎn)換的同類代碼。

    ufo$OccurDate?<-?ymd(ufo$OccurDate)
    ufo$ReportDate?<-?ymd(ufo$ReportDate)
    ufo?<-?filter(ufo,(!is.na(OccurDate))|(!is.na(ReportDate)))

    這里唯一的不同就是使用as.Date()函數(shù)進(jìn)行轉(zhuǎn)換時(shí),如果數(shù)據(jù)存在格式不正確則會(huì)拋出錯(cuò)誤提示從而無法轉(zhuǎn)換,而使用包中的ymd()函數(shù)會(huì)默認(rèn)進(jìn)行轉(zhuǎn)換,而將那些無法轉(zhuǎn)換的直接轉(zhuǎn)為空值,所以最后的語句是只選取了數(shù)據(jù)中非空的數(shù)據(jù)。一般來講小編比較喜歡使用as.Date()函數(shù)來轉(zhuǎn)換那些自己不是很了解的數(shù)據(jù),而使用ymd()來轉(zhuǎn)換那些比較了解的數(shù)據(jù),所以各位請智者見智。講完了日期轉(zhuǎn)換,下面介紹城市與州的分拆。

    城市與州的分拆

    十五從軍征閱讀答案請?jiān)囍煤啙嵉恼Z言概括本詩的內(nèi)容_c語言浪漫內(nèi)容源代碼_用c語言轉(zhuǎn)移記事本內(nèi)容

    前面看到,在地址一列中,城市和州是通過逗號(hào)合并在一起的,然而這種存儲(chǔ)方式并不利于進(jìn)行數(shù)據(jù)分析,有必要將城市和州分別拆分出來存儲(chǔ)在城市(city)和州(state)兩列中,這就需要用到R語言中的字符串處理函數(shù),見下面代碼。

    #?創(chuàng)建一個(gè)進(jìn)行字符串分割的函數(shù)
    split_city_state?<-?function(loc)
    {
    ??split.location?<-?tryCatch(strsplit(loc,?",")[[1]],
    ?????????????????????????????error?=?function(e)?return(c(NA,?NA)))
    ??clean.location?<-?gsub("^?","",split.location)
    ??if?(length(clean.location)?>?2)
    ??{
    ????return(c(NA,NA))
    ??}
    ??else
    ??{
    ????return(clean.location)
    ??}
    }
    #?將分拆函數(shù)作用到地址列的每一個(gè)元素上
    city_state?<-?lapply(ufo$Location,split_city_state)
    #?將分拆的后的每行數(shù)據(jù)合并成一個(gè)2維數(shù)組,便于后面引用
    loc_matrix?<-?do.call(rbind,city_state)
    #?將城市數(shù)據(jù)和州數(shù)據(jù)分別存儲(chǔ)在各自列上
    ufo?<-?mutate(ufo,City?=?loc_matrix[,1],State?=?loc.matrix[,2])

    這樣就實(shí)現(xiàn)了州和城市的分拆,至于顯示結(jié)果在完成歷時(shí)時(shí)間分拆之后統(tǒng)一顯示。這里介紹一下其中的命令:首先小編創(chuàng)建了一個(gè)用于拆分州和城市的函數(shù),其中涉及的字符串函數(shù)通過表面意思就可以理解,所以不再對其進(jìn)行過多解釋;而后使用函數(shù)對地址列的每一個(gè)數(shù)據(jù)進(jìn)行拆分,通過()函數(shù)得到的一個(gè)列表,這樣每一個(gè)原數(shù)據(jù)集中的數(shù)據(jù)都被拆分成了兩個(gè)元素;而后使用do.call()函數(shù)將每兩個(gè)元素以行的形式連接在一起,從而形成了一個(gè)二維數(shù)組;最后使用函數(shù)在ufo數(shù)據(jù)集中創(chuàng)建新列,并將相應(yīng)的數(shù)據(jù)存放其中。下面講述歷時(shí)時(shí)間的數(shù)據(jù)提取。

    歷時(shí)時(shí)間數(shù)據(jù)的提取

    因?yàn)闅v時(shí)時(shí)間主要是數(shù)字+空格+min三部分構(gòu)成,所以可以借鑒城市與州拆分的環(huán)節(jié),這里直接給出代碼。

    get_time?<-?function(Dur)
    {
    ??split.duration?<-?tryCatch(strsplit(Dur,?"?")[[1]],
    ?????????????????????????????error?=?function(e)?return(c(NA,?NA)))
    ??clean.duration?<-?gsub("^?","",split.duration)
    ??if?(length(clean.duration)?>?2)
    ??{
    ????return(c(NA,NA))
    ??}
    ??else
    ??{
    ????return(clean.duration)
    ??}
    }
    #?將分拆函數(shù)作用到地址列的每一個(gè)元素上
    Time?<-?lapply(ufo$Duration,get_time)
    #?將分拆的后的每行數(shù)據(jù)合并成一個(gè)2維數(shù)組,便于后面引用
    Time_matrix?<-?do.call(rbind,Time)
    #?將城市數(shù)據(jù)和州數(shù)據(jù)分別存儲(chǔ)在各自列上
    ufo?<-?mutate(ufo,Dur?=?Time_matrix[,1])
    #?剔除不需要的列,僅保留需要的列
    ufo?<-?select(ufo,c("OccurDate","ReportDate","City","State","Dur","DetailDescription")
    ufo

    最終形成數(shù)據(jù)表

    現(xiàn)在數(shù)據(jù)是不是看上去就規(guī)范多了,那么下面就可以利用這些數(shù)據(jù)進(jìn)行一些初步的數(shù)據(jù)分析,探討一下這些數(shù)據(jù)具有什麼特征,因?yàn)楸酒谖恼轮饕侵v述數(shù)據(jù)清洗的,所以對于數(shù)據(jù)分析,本期文章不將進(jìn)行過多闡述,僅僅探討一下ufo出現(xiàn)的日期分布特征。

    十五從軍征閱讀答案請?jiān)囍煤啙嵉恼Z言概括本詩的內(nèi)容_用c語言轉(zhuǎn)移記事本內(nèi)容_c語言浪漫內(nèi)容源代碼

    可視化

    這部分主要分析一下ufo出現(xiàn)的日期分布,從而對ufo出現(xiàn)有一個(gè)潛在的認(rèn)識(shí)。

    #?直方圖——全部數(shù)據(jù)
    ggplot(ufo,?aes(x?=?OccurDate))?+?
    ???????geom_histogram()?+?
    ???????scale_x_date(breaks?=?"50?years")

    直方圖1——ufo主要出現(xiàn)在1950年之后

    通過上圖可以看出ufo主要出現(xiàn)在1950年之后,更加詳細(xì)的分析可以自己動(dòng)手實(shí)驗(yàn)一下,本文就不再過多介紹了。

    后記

    本文講到這里就暫告一段落了,本期文章和大家聊了一下怎么使用R語言去進(jìn)行數(shù)據(jù)的清洗規(guī)整,對數(shù)據(jù)的清洗過程有了一個(gè)比較直觀的認(rèn)識(shí),關(guān)于數(shù)據(jù)的深入分析與建模會(huì)在后續(xù)的文章中逐步介紹,同時(shí)在下期文章中小編將介紹怎么使用去實(shí)現(xiàn)同類的操作,敬請期待。最后再次感謝你們的支持與鼓勵(lì),你們的陪伴是小編前進(jìn)的動(dòng)力!

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有