R语言、02 案例2-1 Pelican商店、《商务与经济统计》案例题
编程教材 《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()
变量分组的三种方法
完整代码
alicepolice/R01_Pelican (github.com)
R语言、02 案例2-1 Pelican商店、《商务与经济统计》案例题的更多相关文章
- 分类算法的R语言实现案例
最近在读<R语言与网站分析>,书中对分类.聚类算法的讲解通俗易懂,和数据挖掘理论一起看的话,有很好的参照效果. 然而,这么好的讲解,作者居然没提供对应的数据集.手痒之余,我自己动手整理了一 ...
- 92、R语言分析案例
1.读取数据 > bank=read.table("bank-full.csv",header=TRUE,sep=";") > 2.查看数据结构 & ...
- R语言︱贝叶斯网络语言实现及与朴素贝叶斯区别(笔记)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 一.贝叶斯网络与朴素贝叶斯的区别 朴素贝叶斯的 ...
- R语言︱XGBoost极端梯度上升以及forecastxgb(预测)+xgboost(回归)双案例解读
XGBoost不仅仅可以用来做分类还可以做时间序列方面的预测,而且已经有人做的很好,可以见最后的案例. 应用一:XGBoost用来做预测 ------------------------------- ...
- R语言︱线性混合模型理论与案例探究(固定效应&随机效应)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 线性混合模型与普通的线性模型不同的地方是除了有 ...
- R语言:recommenderlab包的总结与应用案例
R语言:recommenderlab包的总结与应用案例 1. 推荐系统:recommenderlab包整体思路 recommenderlab包提供了一个可以用评分数据和0-1数据来发展和测试推荐算 ...
- R语言编程艺术#02#矩阵(matrix)和数组(array)
矩阵(matrix)是一种特殊的向量,包含两个附加的属性:行数和列数.所以矩阵也是和向量一样,有模式(数据类型)的概念.(但反过来,向量却不能看作是只有一列或一行的矩阵. 数组(array)是R里更一 ...
- 机器学习实用案例解析(1) 使用R语言
简介 统计学一直在研究如何从数据中得到可解释的东西,而机器学习则关注如何将数据变成一些实用的东西.对两者做出如下对比更有助于理解“机器学习”这个术语:机器学习研究的内容是教给计算机一些知识,再让计算机 ...
- R语言解读多元线性回归模型
转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止 ...
随机推荐
- 5-16 Docker 容器 || Linux
Docker 简介 Linux简介 Linux和windows一样,都是操作系统 只不过windows更易用,适合家庭和非编程人员使用 如果用作服务器,尤其是java项目的服务器,Linux会更加合适 ...
- 4-12 Spring Security + JWT
Spring Security + JWT 此前,在处理登录的业务中,当视为登录成功时,返回的字符串并不是JWT数据,则应该将此数据改为必要的JWT数据. @Service public class ...
- Mysql性能调优-工具篇
EXPLAIN 首先祭出官方文档(这是5.7的,请自行选择版本): Understanding the Query Execution Plan 英文不想看,就看这篇吧: 全网最全 | MySQL E ...
- Nginx 平滑升级、Nginx的一些基础配置
# Nginx 平滑升级 # 方案一:使用Nginx服务信号进行升级 # 1.将就版本的sbin目录下可执行nginx进行备份(mv nginx nginxold) # 2.将新版本 configur ...
- 基于LadybugFlow的微服务编排(1.SpringBoot集成)
前言 前面的系列文章里,介绍了ladybugflow的业务可视化的设计以及常见场景的使用方法. 感谢大家对项目的关注. 本篇文章介绍一下基于ladybugflow的微服务编排场景及使用方法. 1. 业 ...
- cad工具快速选择特性里面是空的解决方法
工具-选项-文件中,支持文件搜索路径中 添加,再浏览,找到"C:\Program Files\Common Files\Autodesk Shared"确定就OK了.
- synchronized原理剖析
synchronized原理剖析 并发编程存在什么问题? 1️⃣ 可见性 可见性:是指当一个线程对共享变量进行了修改,那么另外的线程可以立即看到修改后的最新值. 案例演示:一个线程A根据 boolea ...
- Canvas 线性图形(一):路径
路径的概念 路径是从起始点到结束点之间的连线.个人认为,二维画布中分为线性图形和非线性图形,线性图形包括矩形.直线.曲线.圆形等各种几何图形:非线性图形包括图象.文本.像素.线性图形中又分为路径和非路 ...
- Spring mvc源码分析系列--前言
Spring mvc源码分析系列--前言 前言 距离上次写文章已经过去接近两个月了,Spring mvc系列其实一直都想写,但是却不知道如何下笔,原因有如下几点: 现在项目开发前后端分离的趋势不可阻挡 ...
- 网安等保-Linux服务器之最新Ubuntu-22.04-LTS系统内核优化与安全加固配置脚本使用分享
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x00 前言 ...