2021年1月10日 星期日

如何使用R分析資料

今年三月參加IT幫邦忙鐵人賽完成一個月對R的分析初探,老實說當初對探索式分析
並不是很了解,只是對語法有認知但對於內部的核心你說不懂嗎?好像又懂!
所以在中午吃飯時瀏覽網頁看到R部落格中一篇文章,將dplyr很有架構說了一遍並配合程式範例,比我之前懵懵懂懂更能理解dplyr。

dplyr包含select、filter、arrange、summarize、_group_by等五個語法組合應用,對於內涵而言就是探索式分析,當然這是大數據的語言聽起來很有學問,其實就已起的T-SQL語法,寫過程式的人都知道,若是不式重新開發的系統,一定會有資料庫,程式設計師一定會去看資料庫,從每筆紀錄來了解每個欄位的意義,若是有統計看是哪一個欄位進行次數或數字的加總。

專案經理或系統分析師會從更大的視角來看所有的資料,來發現使用系統的單位所面臨的現況及業務真實的情況,但T-SQL語法有時用起來很僵化使用起來並直覺,下一個指令想半天,所以R提拱五個指令就可以優游於資料當中,並從資料發現你像要有的資訊,並提供業主更有用的資訊或是將發現後的結果經業主認同開發出儀表板系統,讓他們可以知道能了解業務有用的資訊。

這就是探索式分析在商業有用的價值,要不學了R語言也不知要幹麼?這也是目前資料倉儲很多軟體所提供的功能,今天透過範例再度了解R探索式分析。

這一次採用的資料集為gapminder,該資料夾為針對142個國家/地區中的每個國家/地區,提供了從1952年到2007年的每五年預期壽命,人均GDP和人口值。

第一步:安裝套件,並觀看資料內容
library(dplyr)
library(gapminder)
head(gapminder)

從圖上來看總共有六個變數

第二步:資料表列的選擇
gapminder %>% select(country,year,pop)

但是,如果您有幾十個列,並且只有其中幾列不需要其他都需要,該怎麼辦?有一種更好的方法–用負號(-)作為前綴指定不需要的列:
gapminder %>% select(-gapminder$continent)

如您所見,“ 大陸” 列是唯一未顯示的列。這就是您有關列選擇的全部知識。讓我們繼續進行數據過濾。

第三步:資料篩選
過濾數據集是您在工作中最常用的操作之一。並非在給定時間所有數據都相關。有時您需要特定產品的價值或其在第一季度的銷售數字。或兩者。那就是filter()功能派上用場了。
gapminder %>% select( country , year , lifeExp ) %>% 
  filter( year == 2007)
您可以將多個過濾條件嵌套在一個內部 filter()功能。只要確保用逗號分隔條件即可。以下是為波蘭選擇2007年的方法:
gapminder %>% select(country,year,lifeExp) %>% 
  filter(year == 2007,country == "Poland")
但是,如果您想要多個國家/地區的結果呢?您可以使用
%)
任務的關鍵字。下面的程式碼段顯示了2007年波蘭和克羅地亞的記錄:
gapminder %>% select(country,year,lifeExp) %>% 
  filter(year == 2007,country %in% c("Poland","Croatia"))
如果您理解這些範例,那麼您將了解數據過濾。讓我們繼續進行數據排序。

第四步:數據排序
有時您希望數據按特定列的值排序。例如,您可能希望按年齡升序或降序對用戶或分數進行排序。您可以輕鬆實現此行為
dplyr
 –
arrange()內置 功能。
gapminder %>% select(country,year,lifeExp) %>% 
  filter(year == 2007) %>% arrange(lifeExp)
如您所見,數據由lifeExp 列升序排列 大多數情況下需要降序排列。實施方法如下:
gapminder %>% select(country,year,lifeExp) %>% 
  filter(year == 2007) %>% arrange(desc(lifeExp))
有時您只希望返回幾行。
top_n ()
函數使您可以指定應顯示多少行。這是一個例子:
gapminder %>% select(country,year,pop,gdpPercap) %>% 
  filter(year == 2007) %>% mutate(gdp=pop*gdpPercap) %>% 
  arrange(desc(gdp)) %>% top_n(5)

就訂購而言就是這樣。下一步–派生列。

第五步:建立計算結果欄位
用 dplyr,您可以使用 mutate()函數來創建新屬性。新的屬性名稱位於等號的左側,內容位於右側–就像聲明變量一樣。

以下示例將GDP計算為人口與人均GDP的乘積,並將其存儲在專用列中。在此過程中進行了其他一些轉換:
gapminder %>% select(country,year,pop,gdpPercap) %>% 
  filter(year == 2007) %>% 
  transmute(gdp = pop * gdpPercap) %>% 
  arrange(desc(gdp)) %>% 
  top_n(5)

代替 mutate(),您也可以使用 transmute()。有一個嚴重的區別–transmute()僅保留派生列。讓我們在上面的示例中使用它:
gapminder %>% summarise(avgLifeExp = mean(lifeExp))


第六步:
計算匯總統計
摘要統計不需要任何介紹。在許多情況下,您需要計算列的簡單平均值。以下是計算整個數據集的平均預期壽命的方法:
gapminder %>% filter(year == 2007,continent == "Europe") %>% 
  summarise(avgLifeExp=mean(lifeExp))

第七步:分組
與分組結合使用時,摘要統計信息將變得更加強大。例如,您可以使用
group_by ()
函數計算每個大陸的平均預期壽命。這是如何做:
gapminder %>% filter(year == 2007) %>% 
  group_by(continent) %>% 
  summarise(avgLifeExp = mean(lifeExp)) %>% 
  arrange(desc(avgLifeExp))

另一個強大的功能是 if_else ()。在創建其值取決於某些條件的新列時,可以使用它。

例如,以下是創建名為over75的列的 方法, 如果一個大陸的平均預期壽命超過75,則其值為 Y,  否則為N:
gapminder %>% filter(year == 2007) %>% 
  group_by(continent) %>% 
  summarise(avgLifeExp = mean(lifeExp)) %>% 
  mutate(over75 = if_else(avgLifeExp>75,"Y","N"))



結論

您已經了解瞭如何使用R來分析數據 dplyr。它是目前對開發人員最友好的軟件包之一,比Python競爭對手Pandas簡單得多。 

閱讀本文後,您應該能夠分析和準備任何類型的數據集。當然,您可以做更高級的事情,但是通常這些只是您今天學到的東西的組合。












沒有留言:

張貼留言

無現金支付的反思!

  **購物經歷** - 作者花費大量時間尋找立燈,最終在IKEA購買了一個649元的立燈 - 在IKEA附近停車場遇到只接受無現金支付的情況,被迫註冊並使用Line Pay **無現金支付的觀察** - 作者認為Line Pay作為前端介面,有助於提高停車場付費效率 - 作者預...