《R語言實戰(zhàn)》筆記系列
本章學習大綱
1.操縱日期和缺失值
2.熟悉數(shù)據(jù)類型和轉換
3.變量的創(chuàng)建和重編碼
4.數(shù)據(jù)集的排序访诱、合并與取子集
5.舍棄(剔除)變量?
第一部分?操縱日期和缺失值
缺失值
在R中,缺失值以符號NA(not available往枷,不可用)表示。可以用函數(shù)is.na()檢查缺失值是否存在会傲。需要注意兩點,一是缺失值被認為是不可比較的拙泽,意味著不能用比較運算符來檢測缺失值的存在淌山。二是R并不將無限的或者不可能出現(xiàn)的數(shù)值標記為缺失值。正無窮和負無窮分別用Inf和-Inf來標記顾瞻。不可能的值用NaN來標記泼疑。若要識別這些數(shù)值,需要用is.infinite()或is.nan()來識別荷荤。
重編碼某些值為缺失值
有些數(shù)據(jù)并沒有直接將缺失值標記為NA退渗,可能用某個與實際不符合的數(shù)據(jù)填充,比如說年齡為999蕴纳。所以需要我們分析數(shù)據(jù)集前將這些數(shù)據(jù)表示為缺失值会油,否者會影響數(shù)據(jù)分析。需要用重編碼來完成這項工作,例如:leadership$age(leader$age==999)<-NA
在分析中排除缺失值
凡是含有缺失值的算術表達式和函數(shù)的計算結果均為缺失值古毛》妫可以用na.rm=TRUE選項,在計算之前移除缺失值并使用剩余的值進行計算稻薇。也可以通過函數(shù)na.omit()直接移除所有含有缺失值的觀測嫂冻。
日期值
日期值通常以字符串的形式輸入到R中,然后轉化為以數(shù)值形式存儲的日期變量塞椎。函數(shù)as.Date()用于執(zhí)行該轉化桨仿,一般形式是as.Date(x,"input-format"),其中x是字符型數(shù)據(jù),input-format則是用于讀入日期的適當格式
日期值的默認輸入格式是yyy-mm-dd案狠。將默認格的字符型數(shù)據(jù)改成對應的格式服傍,需要用as.Date()如圖所示暇昂。
除此之外,Sys.Date()可以返回當天的日期伴嗡,date()可以返回當前的日期和時間急波。也可以用函數(shù)format(x,format="output-format"來輸出指定格式的日期值瘪校,并且可以提取日期值中的某些部分澄暮。format()接受算數(shù)運算的,也可以用difftime()來計算時間間隔阱扬,并以星期泣懊、天猜谚、時哟楷、分、秒來表示仿野。
也可以用as.character()將日期值轉換為字符型窃蹋。進行轉換后卡啰,就可以使用一系列字符處理函數(shù)處理數(shù)據(jù)(如取子集、替換警没、連接等)匈辱。
第二部分 熟悉數(shù)據(jù)類型和轉換
第三部分?變量的創(chuàng)建和重編碼
創(chuàng)建新變量常用的語句是 變量名<-表達式,經(jīng)常表達式包含以下的算術運算符杀迹。
創(chuàng)建新變量并整合到數(shù)據(jù)集中亡脸,需要用transform()函數(shù)。
變量的重編碼是指根據(jù)同一變量和/或其他變量的現(xiàn)有值創(chuàng)建新值得過程树酪∏衬耄可以將一個連續(xù)型變量修改成一組類別值;也可以將誤編碼的值替換成正確值续语;或者將一組分數(shù)線創(chuàng)建一個表示及格垂谢、不及格的變量。要重編碼數(shù)據(jù)绵载,可以用R的邏輯運算符埂陆。
可以用語句variable[condition]<-expression進行重編碼苛白,意思是將僅在condition的值為TRUE時執(zhí)行賦值娃豹。
可以通過函數(shù)names()對變量進行重命名。如names(leadership)[2]<-"testDate"
第四部分?數(shù)據(jù)集的排序购裙、合并與取子集
數(shù)據(jù)集的排序
可以用order()函數(shù)來對一個 數(shù)據(jù)框進行排序懂版。
數(shù)據(jù)集的合并
向數(shù)據(jù)框添加列:要橫向合并兩個數(shù)據(jù)集躏率,用merge()函數(shù)躯畴。多數(shù)情況下民鼓,兩個數(shù)據(jù)框是通過一個或多個共有變量進行聯(lián)結的(即內(nèi)聯(lián)結,inner join)例如total<-merge(dataframeA,dataframeB,by="ID").如果直接橫向合并兩個矩陣或數(shù)據(jù)框蓬抄,并且不需要一個公共索引丰嘉,可以用cbind()函數(shù),但必須保證兩個對象有著相同的行數(shù)嚷缭。例如:total<-cbind(A饮亏,B)
向數(shù)據(jù)框添加行:用rbind()函數(shù)。兩個數(shù)據(jù)框必須有相同的變量阅爽,如果不相同路幸,應該對其中一個數(shù)據(jù)框刪除多余變量或?qū)α硪粋€添加新的變量標記為NA。兩者數(shù)據(jù)框的順序不一定要相同付翁。
數(shù)據(jù)集取子集
第二章已經(jīng)提及過简肴,通過dataframe[row indices,colum indices]來訪問的。
第五部分 選入和舍棄(剔除)變量
舍棄變量的核心思想其中之一就是將變量邏輯性變?yōu)镕ALSE砰识,則不會顯示參與運算。有以下三種辦法佣渴,最后一種會損壞原數(shù)據(jù)仍翰。
用subset()函數(shù)是選擇變量和觀測最簡單的辦法。
用sample()函數(shù)可以讓你從數(shù)據(jù)集中(有放回或無放回地)抽取大小為n的一個隨機樣本观话。函數(shù)第一個參數(shù)代表是由要從中抽樣的元素組成的向量予借,第二個參數(shù)是要抽取的元素數(shù)量,第三個參數(shù)代表無放回抽樣(FALSE)频蛔。