• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

R语言实战前四章学习小结-支付宝账单的简单作图

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

学习了R语言的前四章后,决定做个小项目练练手,翻了下知乎,发现有人用自己的支付宝账单做过相关的简单分析,所以我也打算用这个练练手

首先从支付宝首页下载了2017年1月到6月的支付宝账单,对其中的付款时间和消费金额拎出来进行分析。

读取CSV文件,将这俩列数据从整个数据中摘出来,并改成英文名字,做成新的数据框,代码如下:

alib<-read.csv2('C:/Users/10357/Desktop/alipay_record_20170605_2208_1.csv',header=TRUE,sep=',')
names(alib)[4]<-'Paytime'
names(alib)[10]<-'Account'
newname<-c('Paytime','Account')
newdata<-alib[newname]

接着开始对数据进行清洗和处理,首先将“Account”列数据由因子转换为numeric类型,同理将“Paytime”转换为character类型,并调用sapply函数将“Paytime”中的“年月日”数据和“时分秒”数据分隔出来,且只保留前者;之后将“Account”中数据低于0.3的数据设定为NA值后删除,并同样删除掉俩个不符合条件的异常数据。接着将所有数据按照支付时间来排序。代码如下:

newdata$Account<-as.numeric(levels(newdata$Account)[newdata$Account])
newdata$Paytime<-as.character(newdata$Paytime)
func<-function(x){
  y<-strsplit(x,' ')
  m<-unlist(y)[1]
  return(m)
}
newdata$Paytime<-sapply(newdata$Paytime,func)
newdata$Paytime<-as.Date(newdata$Paytime,'%Y/%m/%d')
newdata$Account[newdata$Account<0.3]<-NA
newdata<-na.omit(newdata)
newdata<-newdata[order(newdata$Paytime),]
newdata<-newdata[c(-1,-2),]
newdata<-newdata[order(newdata$Paytime),]


之后使用tapply函数引入新的数据框monthlyamount,使用plot函数做出对应的按照上半年的支付宝消费趋势图

monthlyamount<-tapply(newdata$Account,format(newdata$Paytime,"%Y/%m"),sum) 
monthlyamount<-as.data.frame.table(monthlyamount) 
names(monthlyamount)<-c("month","Amount") 
monthlyamount$month<-as.character(monthlyamount$month) 
monthlyamount$nmonth<-c(1:nrow(monthlyamount)) 
plot(monthlyamount$nmonth,monthlyamount$Amount,main="2017上半年的吃土图",xlab="month",ylab="Amount",type="b",col="blue",lty=2,xaxt="n") 
axis(1,at=monthlyamount$nmonth,labels = monthlyamount$month,cex.axis=0.2)

同理,做出上半年的消费趋势图

monthlycount<-tapply(newdata$Account,format(newdata$Paytime,"%Y-%m"),length) 
monthlycount<-as.data.frame.table(monthlycount) 
names(monthlycount)<-c("month","Frequency") 
monthlycount$month<-as.character(monthlycount$month) 
monthlycount$nmonth<-c(1:nrow(monthlycount)) 
plot(monthlycount$nmonth,monthlycount$Frequency,type = "b",lty=1,col="blue",main="xiabannianchitu",xlab="month",ylab="Amount",xaxt="n") 
axis(1,at=monthlycount$nmonth,labels = monthlycount$month,cex.axis=0.5)



最后是结果图


心得的话,就是plot作图真的是好丑,得赶快去学习一下ggplot2了;好多功能其实用EXCEL可以轻松实现的功能,用R可能得折腾好久,然后本来想再通过收支的不同情况,对应导出不同的数据来分别做出收入、支出的分析图,但是翻了半天书也不知道怎么实现。。。最后只能用EXCEL区分了下,拿现成的数据做了,,希望有人指点下这一步需要怎么做。。

之后应该也会拿这份数据做后续学习的一个实验样本来检验自己的,学习后面的章节后会对应更行。。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap