R學習筆記--《R語言實戰》第4章
創建新變數
創建新變數或對現有的變數進行變換的語句:
變數名〈– 表達式("表達式"部分可以包含多種運算符和函數)
創建新變數簡化的方式: transform( )變數的重編碼
重編碼涉及根據同一個變數和/或其他變數的現有值創建新值的過程。 使用邏輯運算符重編碼數據。
示例: 將連續型年齡變數age重編碼為類別型變數agecat(young、middle aged、elder)
變數的重命名
1、調用一個互動式的編輯器,使用fix( )函數
2、以編程方式,通過names( )、plyr包中rename( )函數
缺失值
在R中,缺失值以符號NA(Not Available)表示。NA有類型屬性:integer NA,character NA等。
判斷一個向量中是否有缺失值:is.na( )
** 缺失值被認為是不可比較的,這意味著無法使用比較運算符來檢測缺失值是否存在(邏輯測試myvar==NA的結果永遠不會為TRUE)。
** R並不把無限的或者不可能出現的數值標記成缺失值。不可能的值用NaN(not a number)符號來標記。要識別這些數值,需要用到is.infinite( )或is.nan( )。(infinite adj. 無限的,無窮的)
** 正無窮和負無窮分別用Inf 和 -Inf所標記。
** NaN屬於NA,NA不屬於NaN。NaN一般用來表示數字的缺失值,NA可以表示的缺失值的類型範圍更廣(數字/字元…的缺失值)。
▼ 在分析中排除缺失值
** 含有缺失值的算術表達式和函數的計算結果也是缺失值,所以在分析數據之前需要先刪除這些缺失值。
** 使用函數處理不完整的數據時,可以通過查閱幫助文檔help( ),檢查這些函數是如何處理缺失數據的。
多數的數值函數都擁有一個na.rm=TRUE選項,可以在計算之前移除缺失值並使用剩餘值進行計算:
函數na.omit( ),可以刪除所有含有缺失數據的行。newdata <- na.omit(leadership)
日期值
▼知識點一
日期值通常以字元串的形式輸入到R中,然後轉化為以數值形式存儲的日期變數。
將字元串的日期值轉化為數值形式日期變數的函數:as.Date( ),轉換後可以使用後續各章中講到的諸多分析方法對這些日期進行分析和繪圖。
函數語法為as.Date(x, "input_format"),其中x是字元型數據,input_format則給出了用於讀入日期的適當格式。
▼知識點二
Sys.Date( )可以返回當天的日期,而date( )則返回當前的日期和時間。
▼知識點三
函數format(x, format="output_format")用來輸出指定格式的日期值,並且可以提取日期值中的某些部分。
▼知識點四
R的內部在存儲日期時,是使用自1970年1月1日以來的天數表示的,更早的日期則表示為負數。這意味著可以在日期值上執行算術運算。
函數difftime( )也可以用來計算時間間隔,並以星期、天、時、分、秒來表示。
▼知識點五:將日期轉換為字元型變數
函數as.character( )可將日期值轉換為字元型。進行轉換後,即可使用一系列字元處理函數處理數據(如取子集、替換、連接等)
類型轉換
R中提供了一系列用來判斷某個對象的數據類型(is.numeric( ))和將其轉換為另一種數據類型的函數(as.numeric( ))。
數據排序
在R中,可以使用order( )函數對一個數據框進行排序。
默認的排序順序是升序。在排序變數的前邊加一個減號即可得到降序的排序結果。
# 各行依經理人的年齡升序、降序排序
# 各行依女性到男性、同樣性別中按年齡升序、降序排序
數據集的合併
▼ 向數據框添加列
函數merge( ),橫向合併兩個數據框(數據集)。在多數情況下,兩個數據框是通過一個或多個共有變數進行聯結的(即一種內聯結,inner join)。橫向聯結通常用於向數據框中添加變數。
如果要直接橫向合併兩個矩陣或數據框,並且不需要指定一個公共索引,那麼可以直接使用cbind( )函數。每個對象必須擁有相同的行數,以同順序排序。
▼ 向數據框添加行
縱向合併兩個數據框(數據集)使用rbind()函數。兩個數據框必須擁有相同的變數,不過它們的順序不必一定相同。縱向聯結通常用於向數據框中添加觀測。
如果dataframeA中擁有dataframeB中沒有的變數,請在合併它們之前做以下某種處理:
? 刪除dataframeA中的多餘變數;? 在dataframeB中創建追加的變數並將其值設為NA(缺失)。
數據集取子集
R擁有強大的索引特性,可以用於訪問對象中的元素。也可利用這些特性對變數或觀測進行
選入和排除。▼ 選入(保留)變數
leadership數據框中, 語句newdata <- leadership[, c(6:10)]與
myvars <- c("q1", "q2", "q3", "q4", "q5")(將行下標留空(,)表示默認選擇所有行)
newdata <-leadership[myvars] 實現了等價的變數選擇。▼ 剔除(丟棄)變數
方法一:運算符非(!)將邏輯值反轉
方法二: 在某一列的下標之前加一個減號(–)
方法三:相同的變數刪除,設為未定義(NULL)
注意,NULL(未定義)與NA(表示缺失)是不同的。
▼ 選入觀測
示例:
#選擇前三個觀測
#選擇所有30歲以上的男性#將研究範圍限定在2009年1月1日到2009年12月31日之間收集的觀測上
which返回的是向量中那些元素值為真的下標
▼subset()函數
使用subset()函數是選擇變數和觀測最簡單的方法。
▼隨機抽樣sample( )函數能夠從數據集中(有放回或無放回地)抽取大小為n的一個隨機樣本。
sample()函數會返回隨機抽樣得到的元素,之後即可用於選擇數據框中的行。
推薦閱讀:
※學習與實踐筆記—第三講簡單數據處理
※R語言數據可視化——顏色綜合運用與色彩方案共享
※圖形初階1
※R語言可視化——ggplot繪製中心密度輻射圖
※如何隨機地決定R程序的運行先後順序?