搜尋感興趣的網誌

所有文章連結

2022年4月1日 星期五

R Machine Learning | R 機器學習

 


人類自從有電腦以來,每一天都不斷進步,硬體從龐大的機器,到現在量子電腦等~使用方式從最基本的整理資料,到現在進入Artificial Intelligence(AI),透過電腦進行學習、辨識,每天不斷增長的數據量體,是電腦進行學習非常重要的資源,但是一定要有海量數據才能進行嗎?答案是否定的,有一些基本的演算方式可以進行基礎的機器學習,從等級來看機器學習 < 深度學習 < 人工智慧,小雷當初上Python課程時有一部分的課程就是AI,從基本神經元理論到Algorithm演算法,腦袋一開始裝了太多東西,雖然有一堆筆記,但並沒有吸收的很好。


開始進行數據分析的進程時有想過,如果數據清理完成能夠加入機器學習去模擬一些情況,是否分析的結果會更貼近真實心理反應?所以也重新把AI相關的書籍拿出來研讀,部落格文章慢慢的會加入機器學習的成分,除了自我筆記外,也希望可以將分析結合機器學習,達到更完整的分析成果。


目前在AI、機器學習不管是Tensorflow、scikit-learn、Keras,都是很多神人大大團隊建立的,雖然很好學習,載入模組就可以使用,但是小雷在學習上一直有個缺點,就是沒有辦法了解當中的運作時,會學不起來😰,所以打算先以基本的理論著手,若是能夠以基本演算方式可以有成果,那未來進行這些模組時,才知道怎麼運用,會先用R熟悉之後,再進入到Python模組進行。


一開始直接進入到AI有點過頭,所以從基礎開始一步一步來,機器學習裡面最簡易的大概就算是KNN演算方式,KNN全名為 : K Nearest Neighbor(有K個最接近的鄰居),透過點對點公式計算需要預測的點有哪個鄰居是最相近的,概念有點像誰跟誰一國,所以用甚麼應該是一樣的😂,在心理學上有類似的模式,像是群聚效益、跟隨心理等等,不敢說完全正確,但確實有相對應的效果在。


機器學習相關文章也會陸續寫好放上來,相關文章連結如下,不定時更新

R Machine Learning Predict Product - KNN | R 機器學習預測商品 - KNN >> 文章請點我


R Machine Learning Predict Product - KNN | R 機器學習預測商品 - KNN

 



開始進入機器學習的領域,這真的是很有趣的部分,這次要透過基本的程式語言進行KNN的演算編輯,之後再來加入模組進行演算,看看會不會差太多😆,其實用到的函數不多,出來的結果也是很耐人尋味,數據集可以不斷增加,相似度的結果也會出現更多有趣的事情,本篇以年齡、收入做比對模擬可以推薦的手機品牌(Apple, Android),沒有任何的歧視意味,開始建立數據集時只是以直覺填入。


KNN需要的一些基本數學公式

  • 點A到點B距離公式 : |AB|  = √(x1 - x2)² + (y1 - y2)²
  • 標準差 : R有基本函數可以用`sd()`
  • 平均值 : 函數`mean()`
  • 單位標準化 : 原始數值 - 平均值 / 標準差
  • 相似度 : 函數`sqrt()`


數據集可以自己建立,小雷是建立一個.csv檔案,裡面可以透過其他欄位進行相似比對

完整的程式碼也會放在Github,有需要可以自行取用

小雷的Github >> 請點我


載入R包

library(tidyverse)
library(dplyr)
library(ggplot2)


載入數據位置與數據集

 ====================================================
# Phase1 : Import data
# 階段1 : 載入數據
# ====================================================
# 載入數據集位置
setwd("D:\\Github_version_file_R\\data_set\\marchine_learning_data\\KNN")

# Import learning data載入已知數據集
knn_df <- read.csv("machine_learn_R.csv")
knn_df

# 數據集內容
r$> knn_df X name age_year income_million gender live_area buy_product date 1 1 Abe 25 102 male taipei apple 2021/12/20 2 2 Abraham 33 66 male taichung apple 2022/1/15 3 3 Ivan 53 53 male Tainan android 2022/1/23 4 4 Freda 65 70 female Hsinchu apple 2022/2/25 5 5 Geraldine 28 28 female Tainan android 2022/2/1 6 6 Grace 37 36 female Changhua android 2021/10/30 7 7 Joanne 44 41 female taipei android 2021/11/5 8 8 Maria 33 55 female Tainan apple 2021/11/13 9 9 Ozzie 49 68 male Hsinchu apple 2022/3/30 10 10 Pete 30 35 male taichung android 2022/3/1 11 11 Mary 47 44 male Hsinchu android 2022/3/25 12 12 Liv 35 55 male taipei apple 2022/3/12 13 13 Mark 45 77 female Tainan apple 2022/2/1 14 14 Jason 55 76 female Tainan apple 2022/1/1 15 15 Rose 35 80 female taichung apple 2022/1/3 16 16 Fra 55 30 male taichung android 2022/2/5 17 17 Nane 45 55 female Hsinchu apple 2021/12/15 18 18 Nami 34 26 male taichung android 2021/11/5 19 19 Chris 22 12 male taipei apple 2022/10/1 20 20 Bob 33 36 male Tainan android 2021/11/23


自定義想要模擬的預測數據

# ====================================================
# Phase2 : Create forecast data
# 階段2 : 創建需預測數據
# ====================================================
# Define forecast age、income 自定義年齡與收入
age <- as.numeric(readline(prompt = "請輸入年齡 : "))
income <- as.numeric(readline(prompt = "請輸入年收入/萬元 : "))

# Create forecast data建立需預測數據
predict_df <- tibble::tribble(
    ~name, ~age, ~income,
    "Rex", age, income # 導入輸入的年齡與收入
)

# 自訂義輸入
r$> age <- as.numeric(readline(prompt = "請輸入年齡 : ")) income <- as.numeric(readline(prompt = "請輸入年收入/萬元 : ")) 請輸入年齡 : 30 請輸入年收入/萬元 : 40


將原始數據集內容與想預測的數據圖擺再一起查看關聯

# ====================================================
# Phase3 : Correlation diagram
# 階段3 : 畫出關聯圖
# ====================================================
# Correlation diagram between forecast data and learning data
# 繪製測試圖表與預測數據的關聯性
ggplot(
    data = knn_df, # 畫出原始的數據集圖
    mapping = aes(
        x = age_year,
        y = income_million,
        color = buy_product
    )
) +
    geom_point() +
    geom_point(
        x = predict_df$age, # 將測試的數據畫上去
        y = predict_df$income,
        color = "black",
        size = 5
    )


導入所有公式計算
# ====================================================
# Phase4 : Calculate the values required for KNN learning
# 階段4 : 計算出KNN機器學習所需數據
# ====================================================
# Calculate frature avg、sd 計算特徵的平均值與標準差
avg_age <- mean(knn_df$age_year) # age avg
sd_age <- sd(knn_df$age_year) # income sd
avg_income <- mean(knn_df$income_million) # income avg
sd_income <- sd(knn_df$income_million) # income sd

# Change col type 調整欄位型態
knn_df$age_year <- as.numeric(knn_df$age_year) # convert to num
knn_df$income_million <- as.numeric(knn_df$income_million) # convert to num

# Unit standardization and create knn_df cols  knn_df進行單位標準化

knn_df <- knn_df %>%
    mutate( # 平均年收減平均年齡除以年齡標準差,
    # Average annual income minus average age divided by
    # the standard deviation of age
        age_stand = (knn_df$age_year - avg_age) / sd_age,
        income_stand = (knn_df$income_million - avg_income) / sd_income
    )

# simulation_df進行單位標準化
predict_df <- predict_df %>%
    mutate(
        age_stand = (predict_df$age - avg_age) / sd_age,
        income_stand = (predict_df$income - avg_income) / sd_income
    )

# Create similarity col knn_df增加相似度欄位
knn_df <- knn_df %>%
    mutate(
        similarity = (
            sqrt((predict_df$age_stand - knn_df$age_stand)^2 +
                (predict_df$income_stand - knn_df$income_stand)^2)
            )
    )


看一下目前結果

# 想要預測的
predict_df

# 結果輸出
r$> predict_df # A tibble: 1 x 5 name age income age_stand income_stand <chr> <dbl> <dbl> <dbl> <dbl> 1 Rex 30 40 -0.889 -0.545

# 原始數據集
knn_df

r$> knn_df X name age_year income_million gender live_area buy_product date 1 1 Abe 25 102 male taipei apple 2021/12/20 2 2 Abraham 33 66 male taichung apple 2022/1/15 3 3 Ivan 53 53 male Tainan android 2022/1/23 4 4 Freda 65 70 female Hsinchu apple 2022/2/25 5 5 Geraldine 28 28 female Tainan android 2022/2/1 6 6 Grace 37 36 female Changhua android 2021/10/30 7 7 Joanne 44 41 female taipei android 2021/11/5 8 8 Maria 33 55 female Tainan apple 2021/11/13 9 9 Ozzie 49 68 male Hsinchu apple 2022/3/30 10 10 Pete 30 35 male taichung android 2022/3/1 11 11 Mary 47 44 male Hsinchu android 2022/3/25 12 12 Liv 35 55 male taipei apple 2022/3/12 13 13 Mark 45 77 female Tainan apple 2022/2/1 14 14 Jason 55 76 female Tainan apple 2022/1/1 15 15 Rose 35 80 female taichung apple 2022/1/3 16 16 Fra 55 30 male taichung android 2022/2/5 17 17 Nane 45 55 female Hsinchu apple 2021/12/15 18 18 Nami 34 26 male taichung android 2021/11/5 19 19 Chris 22 12 male taipei apple 2022/10/1 20 20 Bob 33 36 male Tainan android 2021/11/23 age_stand income_stand similarity 1 -1.3275207 2.21214628 2.7914426 2 -0.6265197 0.61139721 1.1856065 3 1.1259829 0.03334894 2.0966374 4 2.1774845 0.78925822 3.3444272 5 -1.0646454 -1.07828236 0.5616258 6 -0.2760192 -0.72256034 0.6386427 7 0.3373568 -0.50023408 1.2275574 8 -0.6265197 0.12227944 0.7169129 9 0.7754824 0.70032772 2.0789203 10 -0.8893951 -0.76702559 0.2223263 11 0.6002322 -0.36683833 1.5002079 12 -0.4512694 0.12227944 0.7980068 13 0.4249819 1.10051498 2.1057818 14 1.3012332 1.05604973 2.7131623 15 -0.4512694 1.23391074 1.8317772 16 1.3012332 -0.98935185 2.2353005 17 0.4249819 0.12227944 1.4739225 18 -0.5388946 -1.16721286 0.7144044 19 -1.5903961 -1.78972638 1.4288089 20 -0.6265197 -0.72256034 0.3173925


最後透過相似度將符合的數據抓出來並Print

# ====================================================
# Phase5 : Find most correlation predict product and print
# 階段5 : 找出最具相關性商品並列印
# ====================================================
# check數據
knn_df$age_stand
knn_df$income_stand
knn_df$similarity
predict_df

# 找出最接近預測數據之值
correlation_df <- min(knn_df$similarity)

# 輸出結果
r$> correlation_df [1] 0.2223263


# 確定符合數值的數據位置
accord_loc <- which(knn_df$similarity == correlation_df)

# 輸出結果
r$> accord_loc [1] 10


# 存入符合的數據列
predict_product <- knn_df[accord_loc:accord_loc, ]

# 輸出結果
r$> predict_product X name age_year income_million gender live_area buy_product date 10 10 Pete 30 35 male taichung android 2022/3/1 age_stand income_stand similarity 10 -0.8893951 -0.7670256 0.2223263


# 印出預測商品
cat("依照年齡與年收入預測商品為 : ", predict_product$buy_product)

# 輸出結果
r$> # 印出預測商品 cat("依照年齡與年收入預測商品為 : ", predict_product$buy_product) 依照年齡與年收入預測商品為 : android


當然這樣做每次預測都要重跑一次,數據集大了跑的速度也會很慢,這只是以基本公式怎麼去寫出預測的演算方式,可以做個GUI是最好啦~若有任何錯誤之處,也請各位大大不吝指教!


圖片出處引用 : 由 Antti Ajanki AnAj - 自己的作品, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=2170282

所有文章連接

 


Hi I’m Rex

 

在這個小小的地方,有著小雷學習數據分析、人工智慧、解題網站與編程的筆記,語言包含RPython,也有列出GitGithub版本控制的資訊,寫這個部落格筆記原始的想法是因為用來寫筆記的軟體內容太多了,沒有甚麼時間去整理的更有條理,寫些文章做個備份,順便自我複習,小雷本身並不是資訊科出身的,所以寫的方式偏向一般大眾會看得懂的方式,也讓自己學習時更好理解,若是內容有誤,也請不吝指正,各個項目的連結逐一列出,感興趣的朋友請連結觀看!

 

數據分析的介紹文章 >> 請點我

R語言的介紹文章 >> 請點我

HackerRank解題文章 >> 請點我

GitGithub相關 >> 請點我

機器學習相關 >> 請點我

 

 

不定時會將整理好的筆記寫出來,慢慢增加文章的量體,希望也可以幫助到正在學習程式語言、數據分析的朋友

HackerRank by Python | HackerRank解題

 

會用HackerRank是因為Python是小雷第一個接觸的程式語言,雖然開啟了程式語言的道路,但是Python的通用性太廣了,可以做網頁、App、遊戲、資料科學、AI、影像等等..每個領域所用的模組都不一樣,函數不一樣,剛開始學習時說實在的完全聽不懂,根本搞不清楚函數的用法,參數甚麼的,所以Python學的很差,到接觸數據分析的R,才又對程式編程有比較深入的了解,也開始數據分析的進行,但並不想因為時間的關係荒廢了Python的學習,有空時會開始進行HackerRank的解題,Leecode也有註冊,不過時間上兩個一起有點不切實際,就一步一步來吧


HackerRank解題基本上是自己慢慢想(畢竟沒有時間限制),幾個小時都真的想不出來才會去參考一下網路的解法,所以寫出來的並不是甚麼最佳解(沒有考慮執行速度、記憶體狀況等),單純解的出來就好嘍!!


有解出來的會陸續放上來,有需要的朋友可以參考 : 

FizzBuzz Solution by Python >> 請點我

Plus Minus Solution by Python >> 請點我

TimeConversion Solution by Python >> 請點我

MiniMaxSum Solution by Python >> 請點我

ArrSortMedian Solution by Python >> 請點我

LonelyInteger Solution by Python >> 請點我




2022年3月31日 星期四

Data Analyze by R | R語言數據分析

 



從上完Google Data Analytic數據師課程到現在大約是兩個多月,從重新學習新的編程語言R,到慢慢摸索編程寫出分析報告,不得不說數據分析是很有趣的事情,數據會說故事,會告訴我發生的事情,但小雷並不一定聽的懂它說甚麼,來亂的,一份基礎的分析報告其實就很花時間,從搞清楚問題 >> 確定好目標 >> 了解有那些數據 >> 載入數據 >> 檢視 >> 清理&調整 >> 檢視 >> 聚合彙整 >> 分析 >> 繪製圖表 >> 產出報告,過程很繁雜,大概有80%的時間都在清理的程序。

 

這樣的過程與分析,確實對於很多企業來說是需要的,過往在營運或是行銷時,大多數是經驗 凌駕 數字,除非很大的企業,否則大概都是這樣的模式去進行,畢竟自我確定的經驗,安全感大於數字給予的提示,洞察一旦錯誤,可能損失的會更多,我覺得也是止步不前的問題

 

現在越來越多新的技術、分析的方法,也越來越多企業了解到數據的本質與重要性無論營運、行銷、銷售、管理等等,只要有好的分析團隊,搭配正確的洞察,組織起強大的數據驅動決策方向,對於發展的速度能起到一定程度的重要性。

 

小雷有產出的報告目前不多,隨著使用的函數增加,報告的內容會越趨細緻,不敢說能力多好,只知道能力是可以逐步培養與進步,每一次的產出都是一次的進步。

 

關於Google Data Analyze課程資訊 : 

自我進修課程分享Coursera – Google Data Analytics數據分析師課程

 >> 請點我


各個分析報告的連結,不定期更新,時間以新 舊順序 : 

共享單車Cyclistic案例分析 | Data Analysis Cyclistic by R >> 請點我


Data Analytic Cacao – 案例分析報告 >> 請點我


Hotel Bookings Analytic - 案例分析報告 >> 請點我


Course Study - Bellabeat In R >> 請點我










R basic operation - input、output | R基礎操作 - input、output

 


小雷在寫數據分析的時候,並不會用到input與output,所以也沒特別注意R語言的輸入輸出,但是寫到與機器學習相關的部份時,需要用到輸入輸出,這時候才發現怎麼跟Python不一樣!居然不是一個print走天下(或許有別的,但小雷只用過print!),看了一下base包內的資訊,才發現輸入輸出有不少不一樣的函數!!所以寫幾篇做個備忘,有需要的朋友也可以參考參考。


輸入

`readline()` : 允許從終端機輸入

readline文章 >> 請點我



輸出

`print()` : 輸出值或因子

print文章 >> 請點我


`paste()` : 連接字符後輸出

paste文章 >> 請點我


`cat()` : 可以進行計算後輸出

cat文章 >> 請點我


R basic operation - cat | R基礎操作 - cat

 


輸出最後一個函數是cat,除了輸出數值外,還可以進行計算後輸出,算是最像Python的輸出方式


基本語法

cat(輸出內容)


可用參數

sep = " " >> 設定輸出要添加的字符


設定數據準備進行輸出

# 字串
cat_df <- list(
    animal = c("dog", "cat", "rat", "fish", "lion")
)

# 數字
num <- as.numeric(0:10)


數字進行一般輸出,計算後輸出,重複輸出

# 一般輸出
cat(num)

# 輸出結果
r$> cat(num) 0 1 2 3 4 5 6 7 8 9 10


# 一般輸出 + 字符串
cat("number : ", num)

# 輸出結果
r$> cat("number : ", num) number : 0 1 2 3 4 5 6 7 8 9 10


# 加入sep參數
cat(num, sep = "~~~")

# 輸出結果
r$> cat(num, sep = "~~~")
0~~~1~~~2~~~3~~~4~~~5~~~6~~~7~~~8~~~9~~~10


# 計算輸出
cat("number : ", num * 10)

# 輸出結果
r$> cat("number : ", num * 10) number : 0 10 20 30 40 50 60 70 80 90 100


# 重複性輸出
cat("number : ", rep(num, 2))

# 輸出結果
r$> cat("number : ", rep(num, 2)) number : 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10


字符類的基本上是一樣

# 一般字符輸出
cat(cat_df$animal)

# 輸出結果
r$> cat(cat_df$animal) dog cat rat fish lion


# 加入sep參數
cat(cat_df$animal, sep = "~~~")

# 輸出結果
r$> cat(cat_df$animal, sep = "~~~") dog~~~cat~~~rat~~~fish~~~lion


# 重複性輸出
cat("number : ", sep = "::", rep(cat_df$animal, 2))

# 輸出結果
r$> cat("number : ", sep = "::", rep(cat_df$animal, 2)) number : ::dog::cat::rat::fish::lion::dog::cat::rat::fish::lion

R basic operation - paste | R基礎操作 - paste

 


paste主要的用法是在於連接各個字符串後輸出,輸出時會將數字一併轉為字符輸出,也可以不要輸出,連接字符後轉為存入變量


基本語法

paste(一個或多個向量, ...)


可用參數

sep = " " >> 空格分隔字符串

collapse = NULL >> 如何分隔字符串


建立數字與字符的數據

# 數字數據
num <- as.numeric(1:10)

# 文字數據
letter <- tibble(
    animal = c("dog", "cat", "rat", "fish", "lion")
)


數字連接後輸出,並設定不同連接方式

# 空格分隔
paste(num, sep = " ")

# 輸出結果
r$> paste(num, sep = " ") [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"


# 設定 - 分隔
paste(num, collapse = "-")

# 輸出結果
r$> paste(num, collapse = "-") [1] "1-2-3-4-5-6-7-8-9-10"


# 設定 <> 分隔
paste(num, collapse = "<>")

# 輸出結果
r$> paste(num, collapse = "<>") [1] "1<>2<>3<>4<>5<>6<>7<>8<>9<>10"


字符輸出也是同樣的方式

# 空格分隔
paste(letter$animal, sep = " ")

# 輸出結果
r$> paste(letter$animal, sep = " ") [1] "dog" "cat" "rat" "fish" "lion"


# 設定 - 分隔
paste(letter$animal, collapse = "-")

# 輸出結果
r$> paste(letter$animal, collapse = "-") [1] "dog-cat-rat-fish-lion"


# 設定 <> 分隔
paste(letter$animal, collapse = "<>")

# 輸出結果
r$> paste(letter$animal, collapse = "<>") [1] "dog<>cat<>rat<>fish<>lion"

R basic operation - readline | R基礎操作 - readline

 


有時需要從終端機進行輸入的操作,若是Python輸入,基本上就是input,R輸入的方式比較多元,也著實少了點直譯的方式,要記住的函數比較多,輸入的方式基本上有兩個函數,分別是`scan()`、`readline()`,本篇討論的是readline,scan的輸入參數較多,用法上除了輸入外,也可以導入文件,所以本篇就先不以scan做討論,以下是readline的基本操作


基本語法

readline(prompt = " ")


可用參數

prompt : 提示用戶輸入字串,所以需要加上" "


實際進行輸入,先來輸入姓名,輸入完成直接在終端機出現輸入字符,但是沒有存數任何變數,所以也沒有甚麼用途

# 提示用戶輸入字符
readline(prompt = "請輸入姓名 : ")

# 輸出結果
r$> readline(prompt = "請輸入姓名 : ") 請輸入姓名 : Rex [1] "Rex"


輸入完成存入變數

# 提示用戶輸入字符
name <- readline(prompt = "請輸入姓名 : ")

# 終端輸入後存入變數
r$> name <- readline(prompt = "請輸入姓名 : ") 請輸入姓名 : Rex

# 輸出結果
name

r$> name [1] "Rex"


存入變數之前可以進行型態調整,字符 >> 整數或浮點

# 提示用戶輸入字符並調整型態後存入變數
age <- as.integer(readline(prompt = "輸入年齡 : "))

# 輸出結果
str(age)

r$> str(age) int 30


# 提示用戶輸入字符並調整型態後存入變數
float <- as.numeric(readline(prompt = "輸入小數點 : "))

# 輸出結果
str(float)

r$> str(float) num 33.3

R basic operation - print | R基礎操作 - print

 


R print有別於Python的print,不是混合用的類型,而是單純以輸出值的函數,用法上除了列印一般的值,也可以列印出因子,參數的部分不少,也都是用在較為特殊的地方。


基本語法

print(要列印的項目, ..)


可用參數 - 因子

quote = FALSE >> 字符串是否要括號

max.levels = NULL >> 因子列印多少個等級

width : getOption("width) >> 設定輸出寬度


可用參數 - 表格

digits = getOption("digits") >> 小數點的輸出數量

quote = FALSE >> 字符串是否要括號

na.print = "" >> NA的輸出方式

zero.print = "0" >> 0的字符輸出方式

right = is.numeric(x) || is.complex(x) >> 靠右對其

justify = "none" >> 字符串的對其格式


接下來列印一些比較常用的輸出 >> 小數點輸出,digits設定的不只是小數點,包含整數位

# 設定一個小數點變數
float <- as.numeric(31.12346)


# 輸出結果
print(float, digits = 2)

r$> print(float, digits = 2) [1] 31

# 輸出結果
print(float, digits = 4)

r$> print(float, digits = 4) [1] 31.12


接下來印列因子,直接列印與參數效果

# 設定因子變數
factor_df <- factor(
    factor_df$animal,
    levels = c("dog", "cat", "rat", "fish", "lion")
    )


# 輸出結果
print(factor_df)

r$> print(factor_df) [1] dog cat rat fish lion Levels: dog cat rat fish lion

# 輸出結果
print(factor_df, quote = TRUE, max.levels = 3)

r$> print(factor_df, quote = TRUE, max.levels = 3) [1] "dog" "cat" "rat" "fish" "lion" 5 Levels: "dog" "cat" ... "lion"

2022年3月30日 星期三

R Packages introduce - forcats | R包介紹 – forcats

 


Forcats包是專門處理因子的包,除了改變因子的級別排序外,也能處理因子的值,應用於數據處理時有時會比字符來的方便許多,製作成圖表時也較容易觀看,factor因子應該算是專屬R的特殊形態,關於因子的介紹可以點擊連結觀看介紹與一般操作 >> 點我觀看factor介紹

 

關於forcats包內的函數,依據介紹的會有以下三個 :

 

`fct_reorder()` : 透過另一個變量值進行重新排序

fct_reorder文章 >> 請點我

 

`fct_inorder()` : 依照出現頻率、數字順序等方式重新排列

fct_inorder文章 >> 請點我 


`fct_relevel()` : 手動進行排序

fct_relevel文章 >> 請點我 


 

forcats的函數結構上有一些相同的操作方式 :

1.      開頭都為fct_

2.      第一個參數為要處理的因子向量。

3.      支援pipes通道。

4.      接受傳入的向量是字符串,並且輸出時不會改變類型。

其他文章

看看精選文章

納希克房價分析 | Nashik Apartment Price Analyze – 語法解析(上)

  這次 Nashik 的房價分析有上傳至 Kaggle ,有興趣的朋友可以前往閱覽, RMarkdown PDF 報告存放在 Google 雲端,程式碼則是存放於 Github ,照慣例會分享好用的函式語法,雖說基本的 Packages 與語法可能很多人都會完整的閱覽,但是實際...