• 编程教材 《R语言实战·第2版》Robert I. Kabacoff

  • 课程教材《商务与经济统计·原书第13版》 (安德森)

P48、案例2-1 Pelican 商店

  1. PS C:\Users\小能喵喵喵\Desktop\R\homework\1_Pelican> tree /f
  2. C:.
  3. pelican.r

  4. ├───.vscode
  5. launch.json

  6. └───data
  7. PelicanStores.csv

加载数据

编程教材p32 2.3.2

已知数据集为csv文件,所以要按间隔符形式导入。并删除带缺省值的列。

  1. stores <- read.table("./data/PelicanStores.csv",
  2. header = TRUE, row.names = "Customer", sep = ","
  3. )
  4. res1 <- data.frame(stores)
  5. library(dplyr)
  6. res <- res1 %>% select_if(~ !any(is.na(.)))
  7. print(summary(res))
  8. View(res)

主要变量的百分数频数分布

编程教材 p21~30 、p137~143

顾客类型、支付类型

  1. # ^ 百分数频数分布
  2. # @ 客户类型
  3. typeTable1 <- table(res$Type.of.Customer)
  4. typeTable1 <- prop.table(typeTable1) * 100
  5. print(typeTable1)
  6. # @ 支付方法
  7. typeTable2 <- table(res$Method.of.Payment)
  8. typeTable2 <- prop.table(typeTable2) * 100
  9. print(typeTable2)

销售额类型

课程教材 p25 2.2.1

首先我们要确定组宽,公式为 \(近似组宽=\frac{数据最大值-数据最小值}{组数}\)

Max. :287.59 Min. : 13.23。数据项较少的情况下给定5组互不重叠的组数。组宽约等于 55

  1. # @ 销售额频率分组
  2. typeTable3 <- within(res, {
  3. group1 <- NA
  4. group1[Net.Sales >= 13 & Net.Sales < 68] <- "13.0~67.9"
  5. group1[Net.Sales >= 68 & Net.Sales < 123] <- "68.0~122.9"
  6. group1[Net.Sales >= 123 & Net.Sales < 178] <- "123~177.9"
  7. group1[Net.Sales >= 178 & Net.Sales < 233] <- "178~222.9"
  8. group1[Net.Sales >= 233 & Net.Sales < 288] <- "223~287.9"
  9. })
  10. # print(head(sales))
  11. typeTable3 <- table(typeTable3$group1)
  12. typeTable3 <- prop.table(typeTable3) * 100
  13. print(typeTable3)

条形图或圆饼图显示顾客付款方法数量

编程教材 p110~117

条形图

  1. # ^ 支付方式条形图
  2. png(file = "typeTable2_barplot.png")
  3. par(mar = c(10, 4, 4, 0))
  4. barplot(typeTable2,
  5. main = "100个顾客付款方法数量条形图",
  6. xlab = "", ylab = "频数", las = 2
  7. )
  8. dev.off()

圆饼图

  1. # ^ 支付方式圆饼图
  2. png(file = "typeTable2_pie.png")
  3. colors <- c("#4286f4", "#bb3af2", "#ed2f52", "#efc023", "#ea7441")
  4. pie(typeTable2,
  5. main = "Daily Diet Plan",
  6. col = colors, init.angle = 180, clockwise = TRUE
  7. )
  8. dev.off()

顾客类型与净销售额的交叉分组表

编程教材 p137~143 课程教材 p34

  1. # ^ 顾客类型与净销售额的交叉分组表
  2. crossTable <- with(typeTable3, table(Type.of.Customer, group1))
  3. View(addmargins(crossTable))

把交叉分组表中的项目转换成行百分比数或者列百分比数。上面的表格两个类型频数差别太大

  1. # ^ 顾客类型与净销售额的交叉分组表
  2. crossTable <- with(typeTable3, table(Type.of.Customer, group1))
  3. View(crossTable)
  4. # @ 每个顾客类型的行百分比
  5. crossTable <- round(prop.table(crossTable, 1) * 100, 2)
  6. crossTable <- cbind(crossTable, sum = rowSums(crossTable[, 1:5]))
  7. View(crossTable)

普通顾客和促销顾客的净销售额并没有明显区别,但促销顾客出现部分大额净销售额178~287.9,是因为促销活动发的优惠卷促进了消费者的消费欲望,利用消费者的投机心理来促进多买行为。

净销售额与顾客年龄关系的散点图

  1. # ^净销售额与顾客年龄关系的散点图
  2. png(file = "res_scatterplot.png")
  3. plot(
  4. x = res$Net.Sales, y = res$Age,
  5. xlab = "净销售额",
  6. ylab = "年龄",
  7. xlim = c(10, 300),
  8. ylim = c(20, 80),
  9. main = "净销售额与顾客年龄关系的散点图"
  10. )
  11. dev.off()

两个变量之间没有明显相关。但可以发现无论顾客年龄多少,净销售额大多都在0~150区间。

资料

每一行数据求和

  1. cbind(crossTable, sum = rowSums(crossTable[, 1:5]))

使用函数添加的另外一种方式

  1. addmargins(prop.table(mytable, 1), 2) # 加在列
  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 语言经常会发出警告

  1. options(warn=-1) #忽视任何警告
  2. options(warn=1) #不放过任何警告
  3. 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)

R语言、02 案例2-1 Pelican商店、《商务与经济统计》案例题的更多相关文章

  1. 分类算法的R语言实现案例

    最近在读<R语言与网站分析>,书中对分类.聚类算法的讲解通俗易懂,和数据挖掘理论一起看的话,有很好的参照效果. 然而,这么好的讲解,作者居然没提供对应的数据集.手痒之余,我自己动手整理了一 ...

  2. 92、R语言分析案例

    1.读取数据 > bank=read.table("bank-full.csv",header=TRUE,sep=";") > 2.查看数据结构 & ...

  3. R语言︱贝叶斯网络语言实现及与朴素贝叶斯区别(笔记)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 一.贝叶斯网络与朴素贝叶斯的区别 朴素贝叶斯的 ...

  4. R语言︱XGBoost极端梯度上升以及forecastxgb(预测)+xgboost(回归)双案例解读

    XGBoost不仅仅可以用来做分类还可以做时间序列方面的预测,而且已经有人做的很好,可以见最后的案例. 应用一:XGBoost用来做预测 ------------------------------- ...

  5. R语言︱线性混合模型理论与案例探究(固定效应&随机效应)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 线性混合模型与普通的线性模型不同的地方是除了有 ...

  6. R语言:recommenderlab包的总结与应用案例

    R语言:recommenderlab包的总结与应用案例   1. 推荐系统:recommenderlab包整体思路 recommenderlab包提供了一个可以用评分数据和0-1数据来发展和测试推荐算 ...

  7. R语言编程艺术#02#矩阵(matrix)和数组(array)

    矩阵(matrix)是一种特殊的向量,包含两个附加的属性:行数和列数.所以矩阵也是和向量一样,有模式(数据类型)的概念.(但反过来,向量却不能看作是只有一列或一行的矩阵. 数组(array)是R里更一 ...

  8. 机器学习实用案例解析(1) 使用R语言

    简介 统计学一直在研究如何从数据中得到可解释的东西,而机器学习则关注如何将数据变成一些实用的东西.对两者做出如下对比更有助于理解“机器学习”这个术语:机器学习研究的内容是教给计算机一些知识,再让计算机 ...

  9. R语言解读多元线性回归模型

    转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止 ...

随机推荐

  1. Josephus问题(Ⅱ)

    题目描述 n个人排成一圈,按顺时针方向依次编号1,2,3-n.从编号为1的人开始顺时针"一二"报数,报到2的人退出圈子.这样不断循环下去,圈子里的人将不断减少.最终一定会剩下一个人 ...

  2. 从编译器对指令集的要求看API设计原则

    摘要:最近看<计算机体系结构:量化研究方法(第五版)>,发现指令集设计中的一些原则,对API设计也同样适用,给大家分享一下. 本文中的所有内容来自工作和学习过程中的心得整理,如需转载请注明 ...

  3. 思维导图学《On Java》基础卷

    说明 原来读过 <Java 编程思想(第 4 版)>,但是这个版本还是基于 Java 5 讲解.由于 Java 8 做出了非常大的改进(是 Java 变化最大的版本),且截止到 2022- ...

  4. 合并表格行---三层for循环遍历数据

    合并表格行---三层for循环遍历数据 示例1 json <!DOCTYPE html> <html lang="zh_cn"> <head> ...

  5. ETCD快速入门-02 ETCD安装

    2.ETCD安装     etcd 安装可以通过源码构建也可以使用官方构建的二进制文件进行安装.我们以二进制文件为例,系统为CentOS 7.9,操作步骤如下所示: 2.1 Linux ETCD_VE ...

  6. Vue 下拉框值变动事件传多个参数

    在使用 Vue 进行开发时,下拉框值变动事件 @change 是很常用的. 其传参一般分为两种方式:默认传参和自定义传参. 默认传参 @change 默认会传选中项标识的参数,在传参处不用定义,在方法 ...

  7. Slf4j的MDC初尝试

    为什么会用到MDC? 本人使用Java两年时间,鉴于经验有限,在开发java后端代码过程中,为了定位问题,希望同一个线程的requestId可以从web层的日志一直输出到dao层,这样使用Linux命 ...

  8. 一次客户需求引发的K8S网络探究

    前言 在本次案例中,我们的中台技术工程师遇到了来自客户提出的打破k8s产品功能限制的特殊需求,面对这个极具挑战的任务,攻城狮最终是否克服了重重困难,帮助客户完美实现了需求?且看本期K8S技术案例分享! ...

  9. web监听器解析

    监听器是web三大组件之一,事件监听机制如下: 事件:某个事件,如果初始化上下文 事件源:事件发生的地方 监听器:一个对象,拥有需要执行的逻辑 注册监听:将事件.事件源.监听器绑定在一起.当事件源发生 ...

  10. 【NOI P模拟赛】最短路(树形DP,树的直径)

    题面 给定一棵 n n n 个结点的无根树,每条边的边权均为 1 1 1 . 树上标记有 m m m 个互不相同的关键点,小 A \tt A A 会在这 m m m 个点中等概率随机地选择 k k k ...