R語言筆記
04-22
第一、二章最近真的很忙,經歷扶貧、學習加上工作業務等等,真的是在擠時間學習。雖然有點累,而且編程不是強項,但是不能錯過大數據的風口,特別是在學習了一些初創企業的發展方向後,更加堅定了堅持的思想。R語言很簡潔,很容易上手,但是長期扔下編程,也沒有特別好的基礎,所以還是很吃力。學習了第一、二章節後,初步有了概念,加上採用聯想式記憶和學習的方法,應該效果不錯。多了不說,奉上乾貨。第一章:1、安裝軟體:不附圖了,就是安裝,沒什麼問題。
2、初步感受:demo圖示看了後,確實感覺R語言具有的強大圖示能力。
3、幫助:help和?的強大,給了我很好的幫助,就是英語不太好,繼續學習中。這裡使用了help()和example()函數,記住了,並且嘗試多次,效果不錯。表1-2中的幫助函數很多,目前只能記住上述2個,不著急,慢慢來,後續長期使用後,就會熟能生巧,也就能夠記住了。4、工作空間:學會了setwd()和getwd()兩個函數。把路徑搞定,這裡感覺R語言翻譯中的目錄使用不太習慣,還是路徑好一些,或者把路徑和目錄同時講述比較好。5、代碼清單1-2中鬧了笑話,在R語言中實際操作時,無法連續敲出代碼並最終執行。回頭看了一下,原來可以採用直接執行語言或者複製代碼兩種方式,書中的不能連續執行。看來不實際操作真的不行。6、實際操作了一下示例。setwd("C:/R/1")options()options(digits=3)x<-runif(20)summary(x)hist(x)
savehistory()save.image()q()感覺沒有C語言好用,堅持應該會習慣。開始沒理解history函數的意義,現在看來很重要,保存文件,犯了錯誤會隨時發現。7、setwd()、load();sink()、dev.off()配合起來非常好用,記住了。8、輸入時source(),腳本類型還不懂,後續學習。sink()輸出函數。這裡我將sink()函數想像為一個扇子,扇子面分別畫上()、append=TRUE、split=TRUE。9、R提供了幾個工具:包、批處理、結果重用、處理大數據集。包想像為戰鬥機的模塊化武器,需要安裝、載入、使用發射。結果重用就是食堂早餐,我只是刷卡,就能吃早飯,完全不管怎麼做的和原料準備。總結:R語言工作空間浮現腦海,輸入輸出有扇子模型和圖形輸出,戰鬥機模塊化武器、早餐加上容易犯錯。第二章:一、數據結構
1、有數值型、字元型和邏輯型的數據類型。2、向量中把訪問向量元素想像為教室點名,一是只點一個、二是隨機點幾個、三是點從哪到哪一個序列。學生是一樣的,不能學生和大樹一起上課(數據類型一致),c()函數創建。注意字元型要加「」。3、矩陣函數matrix(),把矩陣界面想像為從中間到外面先後出現的矩陣數值、行列命名、matirx(vector,norw=x,ncol=y,byrow=,dimnames=list()),訪問元素用[],方式與向量比較,則變為全班同學點名,不再是一行。vector可以用1::20,也可以用向量。4、數組與矩陣類似,不同處在於vector後為c(最大維度)。想像成一層樓幾個班級,這樣形象。5、數據框感覺很簡單,每一列必須唯一種類,那麼班級中就別都是人類了,加上一些樹人、外星人之類的吧,每一列同樣的種族去參加運動會,點名時候可以參考從矩陣到數組的方式。6、(1)這裡學到了列聯表概念,頭一次接觸到,學習了一下,感覺理解還不夠深入,以後繼續加強吧。table()函數用來列聯表,分析不同變數之間的隱含聯繫,$是訪問某個變數。從程序中嘗試了一下,感覺$就是把變數由列變為向量行,不知道後續理解是否正確。需要注意的是定義的時候,行數應該一致,曾經犯了錯,以後再驗證一下,如果是null則應該賦值為0。(這個地方確實需要驗證¥)(2)這裡attach()和detach(),with(),函數分別用於分析數據框中的屬性。打個比方,承德市和承德縣,attach,detach容易發生把市和縣弄混的情況,with函數專門分析承德縣,劃分不同範圍,用於分析。如果在承德縣創建承德市的戶口,那麼用<<-來解決。(3)data.frame中增加row.names=添加實例標識符。7、因子我理解為程序把名義型和有序型變數進行了分析,便於後台利用已有的方法解決,有點類似列聯表的作用。(此處以後驗證¥)
(1)因子用factor函數來明確,注意一下如果是有序型變數定義因子,要用ordered=TRUE來明確。(2)字元型向量要注意排序問題,levels搞定,回顧一下字元型向量要用「」。8、列表是能夠將上述所有的數據類型容納,同時還不需要與數據框一樣,行數保持一致。函數是list(),另外可以在函數中命名變數。坑的是我用data.frame驗證了一下,也可以命名(早說啊)。> rnames<-c(1,2,3)> cnames<-c("a","b","c")> example<-data.frame(f=rnames,g=cnames)> example f g1 1 a2 2 b
3 3 c> 最後試驗了好幾次,才明白列表的命名是用來方便調用的。不像數據框那樣,直接可以訪問命名的向量,列表需要在函數中對已經命名的向量進行再處理,才能雙框[[]]直接調用。二、輸入方式1、鍵盤輸入把edit想像為鏡子中給衣服畫圖案,如果讓圖案真正印在衣服上,得回歸賦值。2、帶分隔符的文本文件導入。read.table函數搞定。在一個桌子上(table),放著一張.csv格式的紙,read.table從紙上獲得信息,sep=「,」是判定帶分隔符輸入的基礎(這裡我提前了是因為「,」是視覺化想像中的第二位)。第一行header=TRUE獲得各變數名稱(這裡前提是文件中得是標準數據,否則肯定出錯)。row.names當然用來命名實例標識符。(¥還是分不清「」使用的場景,以後再總結和歸納)3、excle數據導入最好導出為csv格式,然後用read.table來導入。否則可以用RODBC包來導入,這裡感覺不好用,還是用read讀取xlsx格式文件。安裝xlsx包,用read.xlsx("路徑",n)讀取。4、xml格式的輸入,沒什麼好說的,大概沒看懂,以後熟悉。5、網頁抓取,這種方式以後應該用的很多。readlines()下載網頁,grep或者gsub處理,以後應用。
6、spss數據導入。學習了spss概念,原來是統計軟體。foreign包中的read.spss()導入,hmisc包中的spss.get導入,use.value.labels=TRUE表示將帶有值標籤的變數導入R中,強調是水平對應。這裡看書,理解了mydataframe的意思。7、sas也是統計軟體。read.ssd()和sas.get()導入。8、stata也是統計軟體,foreign包中的read.dta()導入。9、netcdf導入用ncdf或ncdf4包,存為數組。10、hdf5,分層數據格式。用於超大型和結構極端複雜的數據。11、訪問資料庫管理系統。(1)ODBC介面。rodbc包,這裡注意需要安裝驅動。總結了一下rodbc包:對應odbc資料庫,具有連接、讀取到表、查詢返回、更改更新、結束5個功能。sqlquery()非常強大,可以插入任意有效的sql語句。(2)dbi包,看來不是主流。12、stat/transfer是個輸入工具。以後可以常用。三、向量標籤和值標籤
值標籤中重點是對數值代表意義的描述。否則程序多了後,肯定不容易查詢和修改。四、處理數據對象的函數這些函數可以用來對數據進行分析和觀察。就好像炒菜先得把食材處理一下,才能上火。具體函數以後熟悉。
推薦閱讀:
※《學習之道》讀書筆記整理
※《病隙碎筆》:真正的英雄主義,是在認清生活的真相後依然熱愛生活
※睡眠革命
※系統及演化——均勻和穩定
※回憶與思考
TAG:讀書筆記 |