DAY7+ 學習筆記 by 康康

《R與tidyverse——數(shù)據(jù)分析入門》學習筆記

R與tidyverse——數(shù)據(jù)分析入門

3. dataframe 和 tibble

  1. R中的多變量數(shù)據(jù)的標準保存形式是dataframe耀里;tibble是dataframe的進化版失暴。
  2. 一個正確的dataframe


    書中截圖
  3. 創(chuàng)建tibble
    3.1 新建一個tibble
    tbble() 【注意】tibble是按列寫入的
    舉例:
my_tibble_1 <- tibble(
                nums = c(4, 5, 6),
                chars = c("hej", "你好", "こんにちは"),
                cplxnums = c("4+8i", "3+5i", "3+4i")
                )

tribble()函數(shù)亦可用來創(chuàng)建新tibble. 與tibble()的區(qū)別是,tibble()是逐列寫入數(shù)據(jù)讹剔,tribble()是逐行寫入數(shù)據(jù)颅眶。

3.2 把dataframe轉(zhuǎn)變?yōu)閠ibble
a1 <- as_tibble(a) #a是一個已經(jīng)建好的dataframe
3.3 從外部數(shù)據(jù)創(chuàng)建tibble
安裝readr包蜈出,使用read_csv等命令可以比base包中的read.csv更快導入數(shù)據(jù),而且可以直接生成tibble格式

readr的命令

  1. 在dplyr中進行數(shù)據(jù)變換
    4.1 提取單列
    $(僅用于變量名稱)與[[]](變量名稱或索引)
    4.2 提取多列
    select()可以抓取多列涛酗,并返回一個tibble
    屏幕快照 2020-12-18 下午3.25.09.png
select(test1,Sepal.Length,Species)
#可以額外地按照你指定的順序重排
select(test1, Species, ends_with("Length"))
#ends_with函數(shù)用于找名稱中包含Length的列

4.3 提取observations(即 “行”)
filter() 可以過濾出某個或多個變量滿足某種條件的observations.

#假設我們只想看種名為 virginica且花瓣長度在4和5之間的鳶尾花:
iris_2 <- filter(iris, Species == "virginica", Petal.Length >= 4 & Petal.Length < 5)

4.4 通過索引行數(shù)提取行
slice()

iris_3 <- slice(iris, 21:24) # 抓取`iris`的第21行至24行

4.5 排序
arrange()默認從小到大排序
若要從大到小铡原,可以

arrange(iris, -Sepal.Length)
#或
arrange(iris, desc(Sepal.Length))

根據(jù)Petal.Width從小到大的順序排列,若有并列煤杀,再根據(jù)Petal.Length從大到小的順序排列
arrange(iris, Petal.Width, -Petal.Length)
4.6 用mutate新增變量或重新賦值變量
mutate()的第一個參數(shù)是dataframe/tibble的名稱眷蜈,接下來的參數(shù)都是變量名和它們所對應的值;可以直接在計算它們的值的表達式中使用tibble中原有的變量名沈自,如height, weight

women <- as_tibble(datasets::women)#使用datasets中的數(shù)據(jù)women舉例
women
women1 <- mutate(women, 
                 height_in_m = height/39.37,
                 weight_in_kg = weight/2.204) #在新tibble中新增變量酌儒,將height和weight改成以m和kg為單位
women1
women2 <- mutate(women, height = height/39.37, weight = weight/2.204)#在新tibble中對height和weight進行重新賦值
women2
women3<-mutate(women2,BMI=weight/height^2)
women3

4.7 管道操作
%>%的名稱是“pipe operator”,快捷鍵默認是command+shift+M

其本質(zhì)上就是把它左邊的運算結(jié)果作為右邊函數(shù)的第一個參數(shù)枯途,然后再根據(jù)使用者提供的其它參數(shù)計算右邊的函數(shù)忌怎。第一行是操作的對象 (aids),下面每一行是一次操作酪夷,與邏輯順序一致榴啸,而且不需要每進行一次操作就賦值/重新引用新的數(shù)據(jù),每個函數(shù)的第一個參數(shù)(dataframe/tibble名稱)被省略了晚岭。

aids_4<-select(mutate(filter(aids,status=="D"),span=death-diag),span)
#一環(huán)套一環(huán)鸥印,讀取不易,且需要從里往外讀
head(aids_4) 
# A tibble: 6 x 1
   span
  <int>
1   176
2    67
3   432
4    77
5   275
6   373
aids_5<-aids %>% filter(status=="D") %>% mutate(span=death-diag) %>% select(span)  
#使用管道操作后可以從前往后讀取,邏輯順暢库说,且不易出錯
head(aids_5)
# A tibble: 6 x 1
   span
  <int>
1   176
2    67
3   432
4    77
5   275
6   373
identical(aids_4,aids_5)
[1] TRUE

4.8 group_by與summarise
這是兩個經(jīng)常被放在一起使用的狂鞋,實用且強大的函數(shù)。
group_by()用于分組
summarise()可以匯總計算平均值潜的、標準差骚揍、標準誤等等

> wb_group<-group_by(wb,wool,tension)
> wb_group
# A tibble: 54 x 3
# Groups:   wool, tension [6]
   breaks wool  tension
    <dbl> <fct> <fct>  
 1     26 A     L      
 2     30 A     L      
 3     54 A     L      
 4     25 A     L      
 5     70 A     L      
 6     52 A     L      
 7     51 A     L      
 8     26 A     L      
 9     67 A     L      
10     18 A     M      
# … with 44 more rows
> wb_sum <- summarise(wb_group,n = n(),MEAN= mean(breaks))
`summarise()` regrouping output by 'wool' (override with `.groups` argument)
> wb_sum
# A tibble: 6 x 4
# Groups:   wool [2]
  wool  tension     n  MEAN
  <fct> <fct>   <int> <dbl>
1 A     L           9  44.6
2 A     M           9  24  
3 A     H           9  24.6
4 B     L           9  28.2
5 B     M           9  28.8
6 B     H           9  18.8
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市啰挪,隨后出現(xiàn)的幾起案子信不,更是在濱河造成了極大的恐慌,老刑警劉巖亡呵,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抽活,死亡現(xiàn)場離奇詭異,居然都是意外死亡政己,警方通過查閱死者的電腦和手機酌壕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歇由,“玉大人,你說我怎么就攤上這事果港÷倜冢” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵辛掠,是天一觀的道長谢谦。 經(jīng)常有香客問我,道長萝衩,這世上最難降的妖魔是什么回挽? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮猩谊,結(jié)果婚禮上千劈,老公的妹妹穿的比我還像新娘。我一直安慰自己牌捷,他們只是感情好墙牌,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著暗甥,像睡著了一般喜滨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撤防,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天虽风,我揣著相機與錄音,去河邊找鬼。 笑死辜膝,一個胖子當著我的面吹牛陌凳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播内舟,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼合敦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了验游?” 一聲冷哼從身側(cè)響起充岛,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耕蝉,沒想到半個月后崔梗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡垒在,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年蒜魄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片场躯。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡谈为,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踢关,到底是詐尸還是另有隱情伞鲫,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布签舞,位于F島的核電站秕脓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏儒搭。R本人自食惡果不足惜吠架,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搂鲫。 院中可真熱鬧傍药,春花似錦、人聲如沸默穴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓄诽。三九已至薛训,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仑氛,已是汗流浹背乙埃。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工闸英, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人介袜。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓甫何,卻偏偏與公主長得像,于是被迫代替她去往敵國和親遇伞。 傳聞我的和親對象是個殘疾皇子辙喂,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

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