加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

走进R语言的世界——简单数据处理

发布时间:2020-12-14 04:54:58 所属栏目:大数据 来源:网络整理
导读:作者: 郭小龙 , R语言中文社区专栏作者 。知乎专栏 :https://www.zhihu.com/people/guo-xiao-long-3-18/posts 近期要连续出差,这几天加上周末除了整理出差资料就是在学习R语言,终于按期完成学习任务。前面第一、二章的学习可以算是入门和熟悉,这期简单

作者:郭小龙R语言中文社区专栏作者。知乎专栏:https://www.zhihu.com/people/guo-xiao-long-3-18/posts


近期要连续出差,这几天加上周末除了整理出差资料就是在学习R语言,终于按期完成学习任务。前面第一、二章的学习可以算是入门和熟悉,这期简单数据处理则正式开始用R语言进行实战了。因此本关的笔记废话不叙,直奔主题。

1、书本基本数据管理实操练习

(1)生成一个数据框示例

manager <- c(1,2,3,4,5)
date <- c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")
country <- c("US","US","UK","UK")
gender <- c("M","F","M","F")
age <- c(32,45,25,39,99)
q1 <- c(5,2)
q2 <- c(4,5,2)
q3 <- c(5,1)
q4 <- c(5,NA,2)
q5 <- c(5,1)
leadership <- data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors = FALSE)

(2)创建新变量的3种方法

#第一种方法
mydata <- data.frame(x1 = c(2,6,4),x2=c(3,8))
mydata$sumx <- mydata$x1 + mydata$x2
mydata$meanx <- (mydata$x1 + mydata$x2)/2
#第二种方法
attach(mydata)
mydata$sumx <- x1 + x2
mydata$meanx <- (x1 + x2)/2
detach(mydata)
#第三种方法
mydata <- transform(mydata,sumx=x1 + x2,meanx=(x1 + x2)/2)

(3)变量重编码的2种方法

#变量的重编码(1)
leadership$age[leadership$age == 99] <- NA
leadership$agecat[leadership$age > 75] <- "Elder"
leadership$agecat[leadership$age >= 55 & leadership$age <= 75] <- "Middle Aged"
leadership$agecat[leadership$age < 55] <- "Young"
#变量的重编码的紧凑写法(2)
leadership <- within(leadership,{
 ? ? ? ? ? ? ? ? ? ? ?agecat <-NA
 ? ? ? ? ? ? ? ? ? ? ?agecat[age > 75] ? ? ? ? ? ? ? ?<- "Elder"
 ? ? ? ? ? ? ? ? ? ? ?agecat[age >=55 & age <=75] ? ? <- "Middle Aged"
 ? ? ? ? ? ? ? ? ? ? ?agecat[age < 55] ? ? ? ? ? ? ? ?<- "Young" })

(4)变量重命名的3种方法

#变量的重命名(1)
fix(leadership)
#变量的重命名(2)
names((leadership))
names(leadership)[2] <- "testdate"
leadership
#变量的重命名(3)
install.packages("plyr")
library(plyr)
leadership <- rename(leadership,? ? ? ? ? ? ? ? ? ? c(manager="managerID",date="testdate"))

(5)缺失值的检测和排除

#缺失值的检测
is.na(leadership[,6:10])
#在分析中排除缺失值
leadership
newdata <- na.omit(leadership)

(6)日期格式转化

#日期格式转化
myformat <- "%m/%d/%y"
leadership$testdate <- as.Date(leadership$testdate,myformat)
leadership

(7)数据集的选入和剔除

#数据的升序和降序排序
newdate2 <- leadership[order(leadership$age),]
newdate2
newdata3 <- leadership[order(-age),]
newdata3
#数据集中取子集
myvars <- c("q1","q2","q3","q4","q5")
newdata4 <- leadership[myvars]
newdata4
#剔除数据集中的部分变量
myvars1 <- names(leadership) %in% c("q3","q4")
newdata1 <- leadership[!myvars1]
newdata5 <- leadership[c(-8,-9)] ?#知道被剔除的变量是第几列情况下
newdata5

(8)图形初阶实践

dose <- c(20,30,40,60)
drugA <- c(16,20,27,60)
drugB <- c(15,18,31,40)
#直接键入值修改图形绘制参数
plot(dose,drugA,type="b",lty=3,lwd=3,pch=15,cex=2)
#使用plot()和par()组合函数修改图形参数
plot(dose,type = "b")
opar <- par(no.readonly = TRUE)
par(lty=2,pch=17)
plot(dose,type="b")
par(opar)
#灰度颜色图形绘制
n <- 10
mycolors <- rainbow(n)
pie(rep(1,n),labels=mycolors,col=mycolors)
mygrays <- gray(0:n/n)
pie(rep(1,labels=mygrays,col=mygrays)
2、朝阳医院Excels数据实践练习

(1)Excels数据的导入

#读入Excels数据
install.packages("openxlsx")
library(openxlsx)
readFilepath <- "G:/大数据作业实践和有用资料/第三关作业实践/课件源代码和数据/朝阳医院2016年销售数据.xlsx"
excelData <- read.xlsx(readFilepath,1)

(2)数据的预处理

##………………………………………………………………………………数据预处理阶段
#列名重命名
names(excelData) <- c("time","cardno","drugld","drugName","saleNumber","virtualmoney","actualmoney")
excelData1 <- excelData[!is.na(excelData$time),]

#安装stringr包并对time列截取出年月日部分
install.packages("stringr")
library(stringr)
timesplit <-str_split_fixed(excelData1$time," ",n=2)
excelData1$time <- timesplit[,1]

#转化成日期数值类型
fix(excelData1) ? ? ? ?#查看导入后的excelData1中数据存储类型
excelData1$time <- as.Date(excelData1$time,"%Y-%m-%d")
class(excelData1$time)
excelData1$saleNumber ? ? <- as.numeric(excelData1$saleNumber)
excelData1$virtualmoney ? <- as.numeric(excelData1$virtualmoney)
excelData1$actualmoney ? ?<- as.numeric(excelData1$actualmoney)

#按销售时间进行排序
excelData1 <- excelData1[order(excelData1$time,decreasing = FALSE),]

(3)月均消费次数统计

###月均消费次数统计——————第一项任务
kpi1 <- excelData1[!duplicated(excelData1[,c("time","cardno")]),]
consumeNumber <- nrow(kpi1)
consumeNumber
startTime ?<- ?kpi1$time[1]
endTime ? ?<- ?kpi1$time[nrow(kpi1)]
day ? ? ? ?<- ?endTime - startTime
class(day)
day ? ? ? ?<- as.numeric(day)
month ? ? ?<- ?day %/% 30
monthConsume ?<- consumeNumber %/% month
monthConsume

(4)月均消费金额计算

###月均消费金额计算——————第二项任务
totalMoney ? <- sum(excelData1$actualmoney,na.rm = TRUE)
monthMoney ? <- totalMoney / month
monthMoney

(5)客单价统计

###客单价----------——————第三项任务
pct ?<- totalMoney /consumeNumber
pct ?<- round(pct,2)
pct

(6)消费趋势图形绘制和最终趋势图

###消费趋势--------——————第四项任务
week <- tapply(excelData1$actualmoney,? ? ? ? ? ? ? format(excelData1$time,"%Y-%U"),? ? ? ? ? ? ? sum)
week <- as.data.frame.table(week)
week
names(week) <- c("time","actualmoney")
week$time ?<- as.character(week$time)
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$times,cex.axis=1.5)

3、几点心得和体会

(1)学习时将遇到函数列表统计,后期再用到某函数时直接从列表中翻看其用法和功能,省去拿书翻找的时间,方便高效。

(2)代码的目的是实现最终想法,但写法可以是不拘一格、风格迥异的,发现这也是学编程的一大乐趣。

(3)函数的熟练应用和代码编写细节(如“[]”的应用)仍需边实践边加强巩固。

(4)有些函数功能无法使用,首先要检查其功能支持包是否安装,再查看哪些地方出错。


公众号后台回复关键字即可学习

回复?R? ? ? ? ? ? ? ?R语言快速入门免费视频?
回复?统计??????? ??统计方法及其在R中的实现
回复?用户画像???民生银行客户画像搭建与应用?
回复?大数据??? ??大数据系列免费视频教程
回复?可视化? ? ??利用R语言做数据可视化
回复?数据挖掘?? 数据挖掘算法原理解释与应用
回复?机器学习???R&Python机器学习入门?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读