R 學習筆記(4) -- 數(shù)據(jù)框


數(shù)據(jù)框是列表的一種特例,可以看成是每個組件都是長度相同的向量的列表。數(shù)據(jù)框有類似列表的特性,也有類似矩陣的特性。

創(chuàng)建數(shù)據(jù)框

data.frame() 函數(shù):

> kids
[1] "Jack" "Jill"
> ages
[1] 12 10
> # stringsAsFactors=FALSE 參數(shù)相當于 as.is=TRUE
> # options() 函數(shù)可以設(shè)置全局 stringsAsFactors 選項
> d <- data.frame(kids,ages,stringsAsFactors=FALSE)
> d
  kids ages
1 Jack   12
2 Jill   10
> str(d)
'data.frame':   2 obs. of  2 variables:
 $ kids: chr  "Jack" "Jill"
 $ ages: num  12 10

> # 不同的訪問數(shù)據(jù)框的列的方式,有列表的方式和矩陣的方式
> d[[1]]
[1] "Jack" "Jill"
> d$kids
[1] "Jack" "Jill"
> d[,1]
[1] "Jack" "Jill"

提取子集

數(shù)據(jù)框提取子集的方法可以用類似矩陣取子集的方式,也可以用矩陣的方式進行篩選。
缺失值(NA)的去除可以用 na.rm=TREU 。
subset() 函數(shù)取子集,默認去除缺失值 NA,更方便。
從數(shù)據(jù)框中去除包含缺失值的觀測,可以利用 complete.case() 函數(shù)簡化操作,complet.case() 函數(shù)檢測每一行是否包含 NA 生成一個布爾型向量。
rbind() 和 cbind() 函數(shù)也可以用來給數(shù)據(jù)框增加行和列。

合并數(shù)據(jù)框

merge() 函數(shù),類似關(guān)系型數(shù)據(jù)庫中根據(jù)某個共同變量合并兩個表,merge() 函數(shù)可以合并兩個數(shù)據(jù)框并生成一個新的數(shù)據(jù)框:

> d1
     kids states
1    Jack     CA
2    Jill     MA
3 Jillian     MA
4    John     HI
> d2
  ages    kids
1   10    Jill
2    7 Lillian
3   12    Jack
> d <- merge(d1,d2)
> d
  kids states ages
1 Jack     CA   12
2 Jill     MA   10
> # 共同變量有重復(fù)值,用 merge() 合并出現(xiàn)錯誤
> d2a <- rbind(d2,list(15,"Jill"))
> d2a
  ages    kids
1   10    Jill
2    7 Lillian
3   12    Jack
4   15    Jill
> merge(d1,d2a)
  kids states ages
1 Jack     CA   12
2 Jill     MA   10
3 Jill     MA   15

如果共同變量在其中一個數(shù)據(jù)框中有重復(fù)值,用 merge() 合并可能出現(xiàn)錯誤。

對數(shù)據(jù)框使用 lapply() 函數(shù)

數(shù)據(jù)框是列表的一種特例,也可以應(yīng)用 lapply() 函數(shù)。

> d2
  ages    kids
1   10    Jill
2    7 Lillian
3   12    Jack
> d3 <- lapply(d2,sort)
> d3
$ages
[1]  7 10 12

$kids
[1] "Jack"    "Jill"    "Lillian"

但這個例子破壞了名字和年齡之間的對應(yīng)關(guān)系,沒有意義,僅為示例。


讀古人的書,一方面要知道古人聰明到怎樣,一方面也要知道古人傻到怎樣。--胡適

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容