• <tfoot id="ukgsw"><input id="ukgsw"></input></tfoot>
    
    • 久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
      分享

      R語言進階筆記2 | 長數據與ggplot2

       育種數據分析 2021-11-18

      1. 長數據是什么鬼?

      之前介紹了如何將多個性狀的箱線圖放在一個圖上,比如learnasreml包中的fm數據,它有h1~h5五年的株高數據,想對它進行作圖。

      「數據預覽:」

      > library(learnasreml)
      > data(fm)
      > head(fm)
        TreeID Spacing Rep   Fam Plot    dj    dm    wd h1  h2  h3  h4  h5
      1  80001       3   1 70048    1 0.334 0.405 0.358 29 130 239 420 630
      2  80002       3   1 70048    2 0.348 0.393 0.365 24 107 242 410 600
      3  80004       3   1 70048    4 0.354 0.429 0.379 19  82 180 300 500
      4  80005       3   1 70017    1 0.335 0.408 0.363 46 168 301 510 700
      5  80008       3   1 70017    4 0.322 0.372 0.332 33 135 271 470 670
      6  80026       3   1 70002    2 0.359 0.450 0.392 30 132 258 390 570

      這里,相對h1,h2,h3,h4,h5這五個性狀進行作圖,我們可以將其轉化為「長數據」!

      問題來了,什么是「長數據」,什么是「寬數據」(不是短數據,這不是反義詞,謝謝)

      「寬數據:」

      ?

      即變量是多列數據,每一列都是一個值,比如株高數據,第一年的株高是一列,第二年的株高是一列,第三年的株高是一列,這些數據就是寬數據。

      ?
      ID2018height2019height2020heightt
      ID001121418
      ID002111419
      ID003141516

      「長數據:」

      ?

      即變量是,數據都在一列,比如株高數據,第一列是ID,第二列是年份,第三列是株高,這種數據叫長數據。

      ?
      ID年份株高
      ID001201812
      ID001201914
      ID001202018
      ID002201811
      ID002201914
      ID002202019
      ID003201814
      ID003201915
      ID003202016

      「tidyverse」系列包,喜歡長數據,無論是清洗數據,還是匯總統計,還是ggplot2可視化,都喜歡長數據。

      ?

      飛哥注:我今天明白了這個道理,即tidyverse系列喜歡長數據,感覺打開了任督二脈,對于數據處理又有了新的理解。

      ?

      2. 怎么轉化為長數據

      我知道三種方法:

      • reshape2的melt函數,現在還知道這個包的人,R齡應該在5年以上了,反正我一直都用,很好用,但是被作者嫌棄了,現在被很多人嫌棄了……
      • data.tablemetlt函數,和reshape2包的函數同名,用法也相似,可以對DT數據處理,很快。現在我用melt函數時,就不用載入reshape2了,直接用data.table包就行
      • tidyverse中的tidyr中的pivot_longer函數,這個更簡單,用過這個函數,再也沒有迷路過。因為melt函數語法比較復雜,經常需要查看幫助文檔或者以前的筆記。

      看一下最簡單的方法吧,看一下數據:

      > dd = fm[,c(1,9:13)]
      > head(dd)
        TreeID h1  h2  h3  h4  h5
      1  80001 29 130 239 420 630
      2  80002 24 107 242 410 600
      3  80004 19  82 180 300 500
      4  80005 46 168 301 510 700
      5  80008 33 135 271 470 670
      6  80026 30 132 258 390 570

      然后用pivot_longer函數,將其轉化為長數據:

      > re = dd %>% pivot_longer(.,-1,names_to = "Year",values_to = "Height"
      > head(re)
      # A tibble: 6 x 3
        TreeID Year  Height
        <fct>  <chr>  <int>
      1 80001  h1        29
      2 80001  h2       130
      3 80001  h3       239
      4 80001  h4       420
      5 80001  h5       630
      6 80002  h1        24

      代碼解釋:

      • 我用了管道符%/%,將數據傳遞給pivot_longer
      • 第二個-1,意思是除了第一個不處理,其它都處理,也可以用2:6表示第二到第六列處理
      • 第三個names_to是變量的名稱,這里定義為Year
      • 第四個values_to是保存的性狀名,這里是Height

      可以看到,長數據有3列,分別是:

      • TreeID
      • Year
      • Height

      3. ggplot2作圖怎么搞

      之前我使用ggplot2作圖時,想做什么圖,就在網上copy代碼,然后根據自己的數據名稱,修改代碼,然后運行代碼。一次性代碼,用過就忘,半吊子水平,一直很穩定。

      當我知道了ggplot2用長數據之后,又是另一種理解:

      library(ggplot2)
      re %>% ggplot(.,aes(x = Year, y = Height, colour = Year)) + geom_boxplot()

      先看圖片:

      成功了,圖片比較滿意,第一個是h1的株高,第二個是h2的株高,依次類推。但是代碼是什么意思呢?

      我看了ggplot2的入門,畫圖分為三個部分:

      • 數據在哪里:re是數據
      • x軸,y軸在哪里:x軸是Year,y軸是Height
      • 畫什么類型的圖:這里是箱線圖,所以是geom_boxplot

      「如果是畫分組散點圖:」

      re %>% ggplot(.,aes(x = Year, y = Height, colour = Year)) + geom_point()

      「如果是畫分組分散的散點圖:」

      re %>% ggplot(.,aes(x = Year, y = Height, colour = Year)) + geom_jitter()

      4. 所以散點圖和箱線圖結合呢?

      直接用+連接就行了,感覺到了畫家作圖的快樂,算是丫丫學徒吧,哈哈

      re %>% ggplot(.,aes(x = Year, y = Height, colour = Year)) +  geom_jitter() + geom_boxplot()

      5. 感受

      所以,這就是學習的快樂了!

      R語言進階筆記1 | 深挖一門語言的必要性

        轉藏 分享 獻花(0

        0條評論

        發表

        請遵守用戶 評論公約

        類似文章 更多

        主站蜘蛛池模板: 亚洲国产无套无码AV电影| 99精品国产在热久久婷婷| 国产网友愉拍精品视频手机| 中文字幕国产精品二区| 国产亚洲精品AA片在线爽| 草裙社区精品视频播放| 国产普通话刺激视频在线播放| 无码人妻斩一区二区三区| 久久久久免费看成人影片| 久久蜜臀av一区三区| 亚洲人成网线在线播放VA| 做暖暖视频在线看片免费| 人人妻人人澡人人爽欧美精品| 精品人妻中文无码AV在线| 国产卡一卡二卡三免费入口| 亚洲成人av在线系列| 放荡的美妇在线播放| 久章草在线毛片视频播放| 国内精品国产成人国产三级| 強壮公弄得我次次高潮A片| 西西午夜无码大胆啪啪国模| 99久久激情国产精品| 久久久国产精品VA麻豆| 免费A级毛片樱桃视频| 国产亚洲精AA在线观看SEE| 18禁无遮挡啪啪无码网站破解版| 88国产精品欧美一区二区三区| 成人拍拍拍无遮挡免费视频| 亚洲国产成人影院播放| 亚洲欧美中文日韩V日本| 精品无码人妻一区二区三区品| 男同精品视频免费观看网站| 国产精品国产精品国产专区不卡 | 2020国产欧洲精品网站| 国产白嫩护士被弄高潮| 国产伦码精品一区二区| 美女内射毛片在线看免费人动物 | 久久99国产精品尤物| 亚洲人成人无码网WWW电影首页 | 成人无码区免费视频| 国产精品日韩中文字幕|