R數(shù)據(jù)科學(xué)chapter6

library(tidyverse)

#多數(shù)其他 R 包使用的是標(biāo)準(zhǔn)數(shù)據(jù)框

#使用 as_tibble() 函數(shù)來(lái)完成將數(shù)據(jù)框轉(zhuǎn)換為 tibble:

as_tibble(iris)

#可以通過(guò) tibble() 函數(shù)使用一個(gè)向量來(lái)創(chuàng)建新 tibble锈颗。

#tibble() 會(huì)自動(dòng)重復(fù)長(zhǎng)度為 1 的輸入击吱,并可以使用剛剛創(chuàng)建的新變量

tibble(

? x = 1:5,

? y = 1,

? z=x^2+ y )

#如果你已經(jīng)非常熟悉 data.frame() 函數(shù)覆醇,

#那么請(qǐng)注意 tibble() 函數(shù)的功能要少得多:

#它不能改變輸入的類型(例如,不能將字符串轉(zhuǎn)換為因子)袍辞、變量的名稱搅吁,也不能創(chuàng)建行名稱谎懦。

#可以在 tibble 中使用在 R 中無(wú)效的變量名稱(即不符合語(yǔ)法的名稱)作為列名稱。

#例如梗劫, 列名稱可以不以字母開(kāi)頭枪萄,也可以包含特殊字符(如空格)猫妙。

#要想引用這樣的變量,需要 使用反引號(hào) ` 將它們括起來(lái):

tb <- tibble(

? `:)` = "smile",

? ` ` = "space",

? `2000` = "number"

)

tb

#如果要在 ggplot2 和 dplyr 等其他 R 包中使用這些變量割坠,也需要使用反引號(hào)齐帚。

#創(chuàng)建 tibble 的另一種方法是使用 tribble() 函數(shù),

#tribble 是 transposed tibble(轉(zhuǎn)置 tibble) 的縮寫(xiě)彼哼。

#tribble() 是定制化的对妄,可以對(duì)數(shù)據(jù)按行進(jìn)行編碼:

#列標(biāo)題由公式(以 ~ 開(kāi)頭) 定義,數(shù)據(jù)條目以逗號(hào)分隔敢朱,這樣就可以用易讀的方式對(duì)少量數(shù)據(jù)進(jìn)行布局:

#我通常會(huì)加一條注釋(以 # 開(kāi)頭的行)來(lái)明確指出標(biāo)題行的位置剪菱。

tribble(

? ~x, ~y, ~z,

? #--|--|----

? "a", 2, 3.6,

? "b", 1, 8.5

)

#對(duì)比tibble與data.frame

#tibble 和傳統(tǒng) data.frame 的使用方法主要有兩處不同:打印和取子集。

#打印

#tibble 的打印方法進(jìn)行了優(yōu)化,只顯示前 10 行結(jié)果,

#并且列也是適合屏幕的状共,這種方式非常適合大數(shù)據(jù)集。

#除了打印列名构灸,tibble 還會(huì)打印出列的類型,這項(xiàng)非常棒的功能借鑒于 str() 函數(shù)岸梨。

tibble(

? a = lubridate::now() + runif(1e3) * 86400, b = lubridate::today() + runif(1e3) * 30, c = 1:1e3,

? d = runif(1e3),

? e = sample(letters, 1e3, replace = TRUE)

)

#有時(shí)需要比默認(rèn)顯 示更多的輸出,這時(shí)就要設(shè)置幾個(gè)選項(xiàng)隔披。

#可以明確使用 print() 函數(shù)來(lái)打印數(shù)據(jù)框漓库,并控制打印的行數(shù)(n)和顯示的寬度 (width)。

#width = Inf 可以顯示出所有列

nycflights13::flights %>%

? print(n = 10, width = Inf)

#還可以通過(guò)設(shè)置以下選項(xiàng)來(lái)控制默認(rèn)的打印方式。

#? options(tibble.print_max = n, tibble.pring_min = m):如果多于 m 行,則只打印出 n 行彼妻。

#? options(tibble.print_min = Inf) 表示總是打印所有行幽邓。

#? options(tibble.width = Inf) 表示總是打印所有列,不考慮屏幕的寬度。

#最后一種方式是使用 RStudio 內(nèi)置的數(shù)據(jù)查看器重斑,以滾動(dòng)方式查看整個(gè)數(shù)據(jù)集。

nycflights13::flights %>%

? View()

#取子集

#如果想要提取單個(gè)變量,那么就需 要一些新工具,如 $ 和 [[。

#[[ 可以按名稱或位置提取變量;

#$ 只能按名稱提取變量,但可以減少一些輸入:

#runif()函數(shù)用于生成從0到1區(qū)間范圍內(nèi)的服從正態(tài)分布的隨機(jī)數(shù)

#rnorm()函數(shù)產(chǎn)生一系列服從正態(tài)分布的隨機(jī)數(shù)倦踢,隨機(jī)數(shù)個(gè)數(shù)边涕,均值和標(biāo)準(zhǔn)差都可以設(shè)定。

df <- tibble(

? x = runif(5),

? y = rnorm(5)

)

# 按名稱提取

df$x

df[["x"]]

# 按位置提取

df[[1]]

#在管道中使用這些提取操作腮介,需要使用特殊的占位符 .

df %>% .$x

df %>% .[["x"]]

#與 data.frame 相比灭抑,tibble 更嚴(yán)格:

#它不能進(jìn)行部分匹配,如果想要訪問(wèn)的列不存在,它會(huì)生成一條警告信息访递。

#與舊代碼進(jìn)行交互

#有些比較舊的函數(shù)不支持 tibble响巢。

#如果遇到這種函數(shù)灾炭,可以使用 as.data.frame() 函數(shù)將tibble 轉(zhuǎn)換回 data.frame:

class(as.data.frame(tb))

#有些舊函數(shù)不支持 tibble 的主要原因在于 [ 的功能涛酗。

#對(duì)于 R 基礎(chǔ)包中的數(shù)據(jù)框只泼,[ 有時(shí)返回一個(gè)數(shù)據(jù)框弥咪, 有時(shí)返回一個(gè)向量扳躬。

#對(duì)于 tibble,[ 則總是返回另一個(gè) tibble。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锰什,一起剝皮案震驚了整個(gè)濱河市嫩码,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柬甥,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異墙懂,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)签舞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門拣挪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)笼平,“玉大人寓调,你說(shuō)我怎么就攤上這事晌涕〗ヅ牛” “怎么了可缚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵戈次,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我工碾,道長(zhǎng)百姓,這世上最難降的妖魔是什么渊额? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮垒拢,結(jié)果婚禮上旬迹,老公的妹妹穿的比我還像新娘。我一直安慰自己求类,他們只是感情好奔垦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著尸疆,像睡著了一般椿猎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寿弱,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天犯眠,我揣著相機(jī)與錄音,去河邊找鬼症革。 笑死筐咧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的噪矛。 我是一名探鬼主播量蕊,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼艇挨!你這毒婦竟也來(lái)了残炮?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤雷袋,失蹤者是張志新(化名)和其女友劉穎吉殃,沒(méi)想到半個(gè)月后辞居,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體楷怒,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年瓦灶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸠删。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贼陶,死狀恐怖刃泡,靈堂內(nèi)的尸體忽然破棺而出巧娱,到底是詐尸還是另有隱情,我是刑警寧澤烘贴,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布禁添,位于F島的核電站,受9級(jí)特大地震影響桨踪,放射性物質(zhì)發(fā)生泄漏老翘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一锻离、第九天 我趴在偏房一處隱蔽的房頂上張望铺峭。 院中可真熱鬧,春花似錦汽纠、人聲如沸卫键。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)莉炉。三九已至,卻和暖如春碴犬,著一層夾襖步出監(jiān)牢的瞬間呢袱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工翅敌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留羞福,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓蚯涮,卻偏偏與公主長(zhǎng)得像治专,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遭顶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容