美文网首页
小白学R—简单数据分析

小白学R—简单数据分析

作者: 奔跑的蜈蚣 | 来源:发表于2017-11-08 11:00 被阅读42次

一、本关目标

对“朝阳医院2016年销售数据.xlsx"中的数据进行处理和分析,并完成4个指标:1.月均消费次数;2.月均消费金额;3.客单价;4.消费趋势。

二、数据清洗

1、读取文件

# 将Excel数据变为csv格式后导入
exceldata<-read.table(file.choose(),header = TRUE,
                 sep=",",stringsAsFactors = FALSE)

2、列重命名

# 对列名进行重命名,可使用names()函数或者交互式编辑器fix()
names(exceldata) <- c("time","cardno","drugID","drugName",
                      "saleNumber","virtualmoney","actualmoney")

3、处理缺失值

exceldata<- exceldata[!is.na(exceldata$time),]
# na.omit()删除所有含缺失数据的行,适用于只有少数缺失值或缺失值集中在一小部分观测中

4、处理日期值

# 用stringr包中的字符串匹配函数:str_split_fixed()
library(stringr)
timesplit <- str_split_fixed(exceldata$time," ",n=2)
exceldata$time <- timesplit[,1]

str_split () 与str_split_fixed ():字符串分割函数

str_split(string, pattern, n = Inf, simplify = FALSE)
str_split_fixed(string, pattern, n)
参数列表:
string: 字符串,字符串向量。
pattern: 匹配的字符
n: 分割个数(最后一组不会被分割)。

  • str_split()与str_split_fixed()的区别在于前者返回列表格式,后者返回矩阵格式。
  • 当str_split()中simplify = TRUE时,返回矩阵格式。

5、类型转换

为了指标的计算,需要将数据进行类型转换:

# 购药时间
exceldata$time <- as.Date(exceldata$time,"%Y-%m-%d")
# 销售数量
exceldata$saleNumber <- as.numeric(exceldata$saleNumber)
# 应收金额
exceldata$virtualmoney <- as.numeric(exceldata$virtualmoney)
# 实收金额
exceldata$actualmoney <- as.numeric(exceldata$actualmoney)

6、数据排序

# 按照购药时间对数据进行升序排列
exceldata <- exceldata[order(exceldata$time,decreasing = FALSE),]
# order()默认decreasing = FALSE,升序排列

三、指标计算

1、月均销费次数=总消费次数(去重)/月份数

# 总消费次数(去重):5398
kpi1 <- exceldata[!duplicated(exceldata[,c(1,2)],fromLast = FALSE ),]
consumeNumber <- nrow(kpi1)
# duplicated()默认fromLast=FALSE,即若样本点重复出现,则取首次出现的;去掉重复样本值之后的行名

数据去重参考: http://blog.csdn.net/qq_35242986/article/details/68927909

# 月份数:6
starttime <- kpi1$time[1]
endtime <- kpi1$time[nrow(kpi1)]
days <- endtime-starttime
months <- as.numeric(days)%/%30
# days为日期值,不能直接用除法,需要转换类型

得到月均消费次数:899

# 月均消费次数
monthconsume <- consumeNumber/months

2、月均销费金额=总消费金额/月份数

# 总消费金额:304630.3
totalmoney <- sum(exceldata$actualmoney,na.rm = TRUE)

得到月份消费金额:50771.71

monthmoney <- round(totalmoney/months,2)

3、客单价=总消费金额/总消费次数(去重)

# 客单价:56.43
pct <- totalmoney/consumeNumber

4、消费趋势

# 使用分组计算函数tapply(),以周的形式对实收金额进行分组计算
week <- tapply(exceldata$actualmoney,
               format(as.Date(exceldata$time),"%Y-%W"),sum)

%W从周一到周日计算,%U从周一到周六计算,貌似%W更符合中国人的统计习惯。
关于更多日期格式,请参考:https://www.douban.com/note/347509632/

# 把数组形式的week转换成数据框形式
week <- as.data.frame.table(week)
# 对数据框week的观测进行重命名
names(week) <- c("time","actualmoney")
# 转换变量类型
week$time <- as.character(week$time)
# 在week数据框中增加一列变量
week$timenumber <- c(1:nrow(week))
# 绘制图表
plot(week$timenumber,week$actualmoney,
     xlab = "时间(年份-第几周)",
     ylab = "消费金额",
     xaxt = "n", 
     main = "2016年朝阳医院消费曲线",
     col = "blue",
     type ="b")
axis(1,at=week$timenumber,labels = week$time,cex.axis=1.5)
# 去除x轴上的刻度线
# cex.axis 坐标轴刻度文字的缩放倍数

R语言plot函数参数合集:http://www.cnblogs.com/wutongyuhou/p/5873056.html

四、问题

1 、对于基本的数据分析“套路”还不清楚,只是跟着操作。
2、 对于很多函数以及里面的参数设置不熟悉,不清楚如何使用。
跟着老师的操作进行了练习,其中出现了很多问题,大部分都能够自己解决。为了更清晰的理解和记忆,还需要找一些数据试着操作一下,发现问题,解决问题,才是学习的最佳途径。

相关文章

  • 小白学R—简单数据分析

    一、本关目标 对“朝阳医院2016年销售数据.xlsx"中的数据进行处理和分析,并完成4个指标:1.月均消费次数;...

  • Python 数据分析之NumPy与pandas 的功用

    谈到数据分析,则离不开谈及R语言及R语言与Python在数据分析领域孰优孰劣之争。 首先R语言作为正统统计学软件,...

  • 如何学习R语言

    1. 入门了解R 能干啥?为啥要学R?强大的数据分析工具及各种扩展包高通量的数据处理能力Rstudio(强大的R ...

  • 第12章 大数据分析(R和Hadoop)

    RHadoop是R支持Hadoop大数据分析和处理提供的算法包合集。传统统计学主要关注样本数据(小数据集)的分析,...

  • 用R语言进行KM生存分析

    欢迎关注”生信修炼手册”! R是数据分析常用的软件之一,通过各种功能强大的R包,可以简单方便的实现各种分析。在R语...

  • 三种差异分析的整理

    针对测序数据和芯片数据,目前常用差异分析的R包有edgeR、limma、DESeq2,做一简单比较,方便平时分析。...

  • DAY7+ 学习笔记 by 康康

    《R与tidyverse——数据分析入门》学习笔记 R与tidyverse——数据分析入门[https://tia...

  • 学习R记录 <- 基础1

    今天一晚上学了markdown的语法顺便记录自己学R的东西 为什么学R语言 R是一种用于数据统计分析的编程语言,有...

  • R语言ggplot2科研数据可视化 ~ 推文合集

    小明的数据分析笔记本公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关...

  • R包MetaboAnalystR安装指南(Linux环境非roo

    前言 这是代谢组学数据分析的一个R包,包括用于代谢组学数据分析、可视化和功能注释等众多功能。最近有同事在集群中搭建...

网友评论

      本文标题:小白学R—简单数据分析

      本文链接:https://www.haomeiwen.com/subject/adsemxtx.html