学习了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区分了下,拿现成的数据做了,,希望有人指点下这一步需要怎么做。。
之后应该也会拿这份数据做后续学习的一个实验样本来检验自己的,学习后面的章节后会对应更行。。
|
请发表评论