-
編程教材 《R語言實戰·第2版》Robert I. Kabacoff
-
課程教材《商務與經濟統計·原書第13版》 (安德森)
P48、案例2-1 Pelican 商店
PS C:\Users\小能喵喵喵\Desktop\R\homework\1_Pelican> tree /f
C:.
│ pelican.r
│
├───.vscode
│ launch.json
│
└───data
PelicanStores.csv
加載資料
編程教材p32 2.3.2
已知資料集為csv檔案,所以要按間隔符形式匯入,并洗掉帶預設值的列,
stores <- read.table("./data/PelicanStores.csv",
header = TRUE, row.names = "Customer", sep = ","
)
res1 <- data.frame(stores)
library(dplyr)
res <- res1 %>% select_if(~ !any(is.na(.)))
print(summary(res))
View(res)
主要變數的百分數頻數分布
編程教材 p21~30 、p137~143
顧客型別、支付型別
# ^ 百分數頻數分布
# @ 客戶型別
typeTable1 <- table(res$Type.of.Customer)
typeTable1 <- prop.table(typeTable1) * 100
print(typeTable1)
# @ 支付方法
typeTable2 <- table(res$Method.of.Payment)
typeTable2 <- prop.table(typeTable2) * 100
print(typeTable2)
銷售額型別
課程教材 p25 2.2.1
首先我們要確定組寬,公式為 \(近似組寬=\frac{資料最大值-資料最小值}{組數}\)
Max. :287.59 Min. : 13.23,資料項較少的情況下給定5組互不重疊的組數,組寬約等于 55
# @ 銷售額頻率分組
typeTable3 <- within(res, {
group1 <- NA
group1[Net.Sales >= 13 & Net.Sales < 68] <- "13.0~67.9"
group1[Net.Sales >= 68 & Net.Sales < 123] <- "68.0~122.9"
group1[Net.Sales >= 123 & Net.Sales < 178] <- "123~177.9"
group1[Net.Sales >= 178 & Net.Sales < 233] <- "178~222.9"
group1[Net.Sales >= 233 & Net.Sales < 288] <- "223~287.9"
})
# print(head(sales))
typeTable3 <- table(typeTable3$group1)
typeTable3 <- prop.table(typeTable3) * 100
print(typeTable3)
條形圖或圓餅圖顯示顧客付款方法數量
編程教材 p110~117
條形圖
# ^ 支付方式條形圖
png(file = "typeTable2_barplot.png")
par(mar = c(10, 4, 4, 0))
barplot(typeTable2,
main = "100個顧客付款方法數量條形圖",
xlab = "", ylab = "頻數", las = 2
)
dev.off()
圓餅圖
# ^ 支付方式圓餅圖
png(file = "typeTable2_pie.png")
colors <- c("#4286f4", "#bb3af2", "#ed2f52", "#efc023", "#ea7441")
pie(typeTable2,
main = "Daily Diet Plan",
col = colors, init.angle = 180, clockwise = TRUE
)
dev.off()
顧客型別與凈銷售額的交叉分組表
編程教材 p137~143 課程教材 p34
# ^ 顧客型別與凈銷售額的交叉分組表
crossTable <- with(typeTable3, table(Type.of.Customer, group1))
View(addmargins(crossTable))
把交叉分組表中的專案轉換成行百分比數或者列百分比數,上面的表格兩個型別頻數差別太大
# ^ 顧客型別與凈銷售額的交叉分組表
crossTable <- with(typeTable3, table(Type.of.Customer, group1))
View(crossTable)
# @ 每個顧客型別的行百分比
crossTable <- round(prop.table(crossTable, 1) * 100, 2)
crossTable <- cbind(crossTable, sum = rowSums(crossTable[, 1:5]))
View(crossTable)
普通顧客和促銷顧客的凈銷售額并沒有明顯區別,但促銷顧客出現部分大額凈銷售額178~287.9,是因為促銷活動發的優惠卷促進了消費者的消費欲望,利用消費者的投機心理來促進多買行為,
凈銷售額與顧客年齡關系的散點圖
# ^凈銷售額與顧客年齡關系的散點圖
png(file = "res_scatterplot.png")
plot(
x = res$Net.Sales, y = res$Age,
xlab = "凈銷售額",
ylab = "年齡",
xlim = c(10, 300),
ylim = c(20, 80),
main = "凈銷售額與顧客年齡關系的散點圖"
)
dev.off()
兩個變數之間沒有明顯相關,但可以發現無論顧客年齡多少,凈銷售額大多都在0~150區間,
資料
每一行資料求和
cbind(crossTable, sum = rowSums(crossTable[, 1:5]))
使用函式添加的另外一種方式
addmargins(prop.table(mytable, 1), 2) # 加在列
addmargins(prop.table(mytable, 2), 1) # 加在行
RStudio table描述性統計,頻數,頻率,總和,百分比 - 知乎 (zhihu.com)
cbind函式給列命名
Set Column Names when Using cbind Function in R | Rename Variables (statisticsglobe.com)
scatterplots
R - Scatterplots (tutorialspoint.com)
piechart
R Tutorials (tutorialkart.com)
How to draw Pie Chart in R programming language (tutorialkart.com)
barplot 顯示問題
graph - How to display all x labels in R barplot? - Stack Overflow
關于warning問題
帶中文字符 R 語言經常會發出警告
options(warn=-1) #忽視任何警告
options(warn=1) #不放過任何警告
options(digits = 2) #將有效輸出變為2
prop.table()
How to Use prop.table() Function in R (With Examples) - Statology
prop table in R: How Does the prop.table()
變數分組的三種方法
R語言將變數分組的三種方法(含cut函式介紹
完整代碼
alicepolice/R01_Pelican (github.com)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/509483.html
標籤:R
上一篇:R語言、01 VSCODE 配置 R 環境快速指南、4.2.1版本
下一篇:HashMap原始碼分析