R數(shù)據(jù)科學 數(shù)據(jù)清洗透視-1 相關(guān)函數(shù) gather(), spread()

R數(shù)據(jù)科學最直接,也最讓人感到興奮的過程就是數(shù)據(jù)可視化,但是能夠直接用來進行可視化的數(shù)據(jù)少之又少,實際分析中基本碰不到,所以就需要對數(shù)據(jù)進行數(shù)據(jù)清洗過程。

在R中,我們最常見的數(shù)據(jù)類型就是數(shù)據(jù)框。對于數(shù)據(jù)框而言,每一列就是一個變量(variable),每一行就是一個觀測(observation),而每個單元格的值,就是觀測值(values)。

Fig1: Adapted from book of Hadley Wickham

我們可以通過一個例子來直觀地感受一下。

attach(iris)
mini_iris <- iris[c(1,51,101),]
mini_iris
> mini_iris
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
51           7.0         3.2          4.7         1.4 versicolor
101          6.3         3.3          6.0         2.5  virginica

其中花萼長度,花萼寬度,花瓣長度,花瓣寬度,以及品質(zhì)都是變量(vairable)名,序號1,51,101代表的是三條觀測記錄,單元格里代表的是每一個觀測值。

這個時候,我們需要將行名拆除,并且把行名塞進列里面,單元格的數(shù)字也變成一個新列,并且每一行只有一個觀測值。我們需要怎樣操作呢?

這時候就可以用到gather()函數(shù)。

> gather(mini_iris, key = "flower_attr",value = "attr_value", Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)
#如果要變換的variable實在是太多,無法一一指定,可以通過“-”反選一些不需要的列。
> gather(mini_iris, key = "flower_attr",value = "attr_value", -Species)

都會得到如下結(jié)果

      Species  flower_attr attr_value
1      setosa Sepal.Length        5.1
2  versicolor Sepal.Length        7.0
3   virginica Sepal.Length        6.3
4      setosa  Sepal.Width        3.5
5  versicolor  Sepal.Width        3.2
6   virginica  Sepal.Width        3.3
7      setosa Petal.Length        1.4
8  versicolor Petal.Length        4.7
9   virginica Petal.Length        6.0
10     setosa  Petal.Width        0.2
11 versicolor  Petal.Width        1.4
12  virginica  Petal.Width        2.5

而spread()函數(shù)的功能正好相反。是將行里面的數(shù)據(jù)又還到列里面去。

attach(iris)
mini_iris <- iris[c(1,51,101),]
flatted_data <- gather(mini_iris, key = "flower_attr",value = "attr_value", -Species)
spread(flatted_data, flower_attr)
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
51           7.0         3.2          4.7         1.4 versicolor
101          6.3         3.3          6.0         2.5  virginica

(完)

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

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