在商業資料分析領域,SQL 與 R 語言的結合應用至關重要。透過 SQL,我們可以有效地從資料函式庫中提取所需資料,而 R 則提供強大的統計分析和視覺化工具,幫助我們深入挖掘資料價值。本文將引導讀者瞭解如何結合 SQL 與 R,從資料函式庫查詢到資料分析,建立一套完整的工作流程,有效提升資料處理效率與分析洞察力。此流程涵蓋 SQL 基礎語法、資料函式庫查詢技巧、R 基礎知識、資料分析環境設定、資料匯入與匯出等導向,尤其針對臺灣商業環境常見的資料處理需求,提供實務操作。

SQL 基礎知識

SQL(Structured Query Language)是一種用於管理關係式資料函式庫的語言。它的基礎知識包括 SELECT、FROM 和 WHERE 三個部分。

SELECT 陳述式

SELECT 陳述式用於指定要從資料表中檢索的欄位。例如,如果你想要檢索 Customer_IDDate_DayProd_Cat 欄位,你可以使用以下 SQL 陳述式:

SELECT Customer_ID, Date_Day, Prod_Cat
FROM retail_db.sales_tbl;

FROM 陳述式

FROM 陳述式用於指定要從哪個資料表中檢索資料。在上面的例子中,我們從 retail_db.sales_tbl 資料表中檢索資料。

WHERE 陳述式

WHERE 陳述式用於指定要檢索的資料的條件。例如,如果你想要檢索 Electronics 類別的交易資料,並且交易日期在一月到五月之間,你可以使用以下 SQL 陳述式:

SELECT Customer_ID, Date_Day, Prod_Cat
FROM retail_db.sales_tbl
WHERE Prod_Cat = 'Electronics' AND Date_Day BETWEEN '2022-01-01' AND '2022-05-31';

在 WHERE 陳述式中,你可以使用各種運運算元,例如 =, <, >, <=, >=, <>', BETWEEN, OR, AND, INNOT IN` 等。

資料型別

在 SQL 中,各種資料型別都有其特定的格式。例如,日期欄位需要以 yyyy-mm-dd 格式表示,非數值欄位需要以單引號括住。

範例

假設我們有一個 sales_tbl 資料表,包含了銷售交易的相關資料。如果我們想要檢索所有欄位和所有列的資料,可以使用以下 SQL 陳述式:

SELECT * FROM retail_db.sales_tbl;

如果我們只想要檢索 Customer_IDDate_DayProd_Cat 欄位,並且只想要檢索 Electronics 類別的交易資料,可以使用以下 SQL 陳述式:

SELECT Customer_ID, Date_Day, Prod_Cat
FROM retail_db.sales_tbl
WHERE Prod_Cat = 'Electronics';

如果我們想要檢索 Electronics 類別的交易資料,並且交易日期在一月到五月之間,可以使用以下 SQL 陳述式:

SELECT Customer_ID, Date_Day, Prod_Cat
FROM retail_db.sales_tbl
WHERE Prod_Cat = 'Electronics' AND Date_Day BETWEEN '2022-01-01' AND '2022-05-31';

看圖說話:

  flowchart TD
    A[SELECT] --> B[FROM]
    B --> C[WHERE]
    C --> D[執行查詢]
    D --> E[傳回結果]

這個流程圖展示了 SQL 查詢的基本流程,從 SELECT 陳述式開始,然後是 FROM 陳述式,接著是 WHERE 陳述式,最後是執行查詢並傳回結果。

資料函式庫查詢與分析

在進行資料函式庫查詢時,瞭解如何有效地篩選和排序資料是非常重要的。以下將介紹幾個基本的查詢技巧,包括使用 WHERE 子句、ORDER BY 子句、IN 運運算元和 DISTINCT 關鍵字。

篩選資料

當我們想要從資料函式庫中篩選出特定條件的資料時,可以使用 WHERE 子句。例如,如果我們想要找出所有電子產品(Electronics)的銷售資料,可以使用以下查詢:

SELECT *
FROM retail_db.sales_tbl
WHERE Prod_Cat = 'Electronics'
AND Date_Day BETWEEN '2015-01-01' AND '2015-05-31';

排序資料

如果我們想要根據某個欄位對資料進行排序,可以使用 ORDER BY 子句。例如,要根據銷售金額(Sales)對資料進行遞增排序,可以使用以下查詢:

SELECT *
FROM retail_db.sales_tbl
WHERE Sales > 50
ORDER BY Sales;

使用 IN 運運算元

當我們需要篩選多個特定值時,可以使用 IN 運運算元。例如,要找出客戶 ID 為 727635 和 230333 的銷售資料,可以使用以下查詢:

SELECT *
FROM retail_db.sales_tbl
WHERE Customer_ID IN (727635, 230333);

去除重複值

如果我們只想要得到唯一的值,可以使用 DISTINCT 關鍵字。例如,要找出客戶 ID 為 727635 和 230333 的唯一產品類別,可以使用以下查詢:

SELECT DISTINCT Prod_Cat
FROM retail_db.sales_tbl
WHERE Customer_ID IN (727635, 230333);

匯出資料

在 MySQL 中,匯出資料可以使用 INTO OUTFILE 子句。例如,要將前面的查詢結果匯出為 CSV 檔案,可以使用以下查詢:

SELECT DISTINCT Prod_Cat
FROM retail_db.sales_tbl
WHERE Customer_ID IN (727635, 230333)
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/output.csv';

R 基礎

R 是一種強大的統計分析語言,以下將介紹 R 的一些基礎知識。

安裝套件

在 R 中,安裝套件可以使用 install.packages() 函式。例如,要安裝 ggplot2 套件,可以使用以下命令:

install.packages("ggplot2")

載入套件

要使用某個套件,需要先載入它,可以使用 library() 函式。例如,要載入 ggplot2 套件,可以使用以下命令:

library(ggplot2)

設定工作目錄

在 R 中,工作目錄是用於儲存和載入檔案的目錄。要設定工作目錄,可以使用 setwd() 函式。例如,要設定工作目錄為 C:/Users/玄貓/Documents,可以使用以下命令:

setwd("C:/Users/玄貓/Documents")

取得工作目錄

要取得目前的工作目錄,可以使用 getwd() 函式。

getwd()

這些是 R 和 MySQL 中的一些基礎知識,希望對您有所幫助。

資料分析環境設定

首先,我們需要設定工作目錄,以便存取所需的檔案。這可以透過 setwd() 函式完成,指定工作目錄為 "C:\\Desktop\\Analysis"

setwd("C:\\Desktop\\Analysis")

接下來,確認目前的工作目錄是否正確設定,可以使用 getwd() 函式。

getwd()

資料匯入與匯出

R 中的資料匯入與匯出可以透過多種方式進行,包括從 CSV 檔案、資料函式庫等來源匯入資料。

從 CSV 檔案匯入資料

假設我們有一個名為 Demographics.csv 的檔案,且已經設定了正確的工作目錄,則可以使用 read.csv() 函式匯入資料。

c3_mydata_1 <- read.csv("Demographics.csv", header = TRUE)

從資料函式庫匯入資料

如果我們需要從資料函式庫中匯入資料,則可以使用 RODBC 套件。首先,需要安裝 ODBC 驅動程式,然後安裝並載入 RODBC 套件。

# 安裝 RODBC 套件
install.packages("RODBC")

# 載入 RODBC 套件
library(RODBC)

# 連線到 MySQL 資料函式庫
db <- odbcConnect(dsn = "mysql", uid = "root", pwd = "password1")

# 顯示所有的 schema 和表格
sqlTables(db)

# 查詢 sales_tbl 表格的資料
c3_mydata_2 <- sqlQuery(db, "select * from retail_db.sales_tbl")

# 關閉資料函式庫連線
odbcClose(db)

從網站提取資料

R 也提供了多種套件來提取網站上的資料,例如 RCurl 和 XML 套件。

# 安裝 RCurl 和 XML 套件
install.packages("RCurl")
install.packages("XML")

# 載入 RCurl 和 XML 套件
library(RCurl)
library(XML)

# 提取網站上的資料
url <- "https://example.com"
html <- htmlParse(url, asText = TRUE)

# 提取網站上的段落
xpathSApply(html, "//p")

這些方法可以幫助您在 R 中匯入和處理不同的資料來源。

從內在修養到外在表現的全面檢視顯示,紮實的SQL和R基礎對於資料分析而言,如同深厚的內功修煉,能有效提升資料處理和分析能力。多維比較分析顯示,相較於僅掌握單一工具,同時精通SQL和R的複合型人才更具競爭優勢,能更有效率地從資料中萃取價值。然而,學習過程中最大的挑戰在於融會貫通,而非單純的語法 memorization。唯有理解資料函式庫的底層邏輯,並結合R語言的統計分析能力,才能將資料轉化為洞察力。從個人價值觀對職涯選擇的影響考量,資料分析能力的提升能為個人開拓更廣闊的職涯發展空間,並在資料驅動的時代中佔據先機。玄貓認為,此修養路徑已展現足夠效益,適合關注長期成長的管理者採用。