学习了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区分了下,拿现成的数据做了,,希望有人指点下这一步需要怎么做。。

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

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

  1. R语言实战-第九章 R in action-chapter9

    #第九章方差分析 #需要的packages:car gplots HH rrcov multicomp effects MASS mvotlier #单因素方差分析 #数据集来源multcomp包的c ...

  2. R语言实战-读书笔记(第1 章 R语言介绍)

    *R语言实战所有学习笔记,如涉及侵权,请联系撤稿.* **标题号与书中标题号对应** R语言实战 第1章 R语言介绍     1.2 R的获取与安装         R可以在CRAN(Comprehe ...

  3. 对比《学习R》PDF代码+《R语言实战第2版》PDF代码+《R数据科学》PDF代码分析

    R语言是世界上最流行的用于数据处理和统计分析的脚本语言.考古学家用它来跟踪古代文明的传播,医药公司用它来探索哪种药物更安全.更有效,精算师用它评估金融风险以保证市场的平稳运行.总之,在大数据时代,统计 ...

  4. R语言mad(c(1 2 3 4)),R语言--数据管理-R语言实战笔记-第四五章

    第四.第五章都是说的数据管理,合并在一起做个总结,在个人看来,数据管理是一件非常繁琐的事情,但是,每个统计的前提都是一个合适的数据样本,对的,"合适",做到合适可不是一个简单的事情 ...

  5. R语言实战笔记--第四五章 数据管理

    R语言实战笔记–第四&五章 数据管理 标签(空格分隔): R语言 第四.第五章都是说的数据管理,合并在一起做个总结,在个人看来,数据管理是一件非常繁琐的事情,但是,每个统计的前提都是一个合适的 ...

  6. R:R语言实战学习一(基本统计分析)

    本学期的课程R语言实战只学了前六章的皮毛,实际上后面的知识用的更多,前面的是基础,这次学习第七章:基本统计分析. 1.描述性统计分析 主要关注分析连续型变量的中心趋势.变化性和分布形状的方法,为了便于 ...

  7. R语言实战笔记--第十五章 处理缺失数据

    R语言实战笔记–第十五章 处理缺失数据 标签(空格分隔): R语言 处理缺失数据 VIM mice 缺失值(NA),是导致我们计算错误的一大来源,处理缺失数据在实际的应用中有着较为重要的作用. 基本方 ...

  8. R语言实战笔记--第十二章 重抽样(置换检验)与自助法

    R语言实战笔记–第十二章 重抽样(置换检验)与自助法 标签(空格分隔): R语言 重抽样 自助法 置换检验 置换检验 双样本均值检验的时候,假设检验的方法就是,检查正态性.独立性.方差齐性,分别对应的 ...

  9. R语言实战笔记--第十四章 主成分和因子分析

    R语言实战笔记–第十四章 主成分和因子分析 标签(空格分隔): R语言 主成分分析 因子分析 原理及区别 主成分分析与因子分析很接近,其目的均是为了降维,以更简洁的数据去解释结果,但这两种方法其实是相 ...

最新文章

  1. Java Web学习总结(30)——Service层在MVC框架中的意义和职责
  2. 声明一个const数组
  3. 如何让自己的收件箱只收到自己订阅的邮件服务商
  4. VS2010下安装配置OpenCV2.4.4
  5. boost::rational模块相关的测试程序
  6. QT的QPair类的使用
  7. CYQ.Data 数据框架 V4.0 开源版本发布(源码提供下载,秋色园V2.5版本标配框架)
  8. NodeJs中使用jQuery?
  9. 高观点下的高等数学(数学分析、线性代数)
  10. hadoop大数据生态概述
  11. 飞思卡尔智能车摄像头矫正方案
  12. 中国数字校园建设市场全景调研与投资发展战略分析报告2022-2028年版
  13. 猿创征文|Python学习工具千千万,我心中的TOP10
  14. argparse模块中的参数action、dest使用
  15. 操作性条件作用和经典性条件作用中,刺激分化和泛化的区别是?|小白心理-312/347考研答疑
  16. 离线调用linux命令,GitHub - rinetd/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...
  17. 漫画:什么是ConcurrentHashMap?
  18. 官宣!2022汇佳学校毕业生捷报汇总
  19. 解决错误:microsoft sharepoint designer does not support editing non-sharepoint sites 的方法
  20. php 活动网站,网页游戏的活动管理后台和管理后台

热门文章

  1. [数据库汇总]-- sql 的基本知识
  2. 经典5000句(四)
  3. Maven项目打包遇到的两个问题
  4. 解决命名空间缺少引用问题
  5. 关于 jupyter notebook 运行时不再显示结果,行头提示符变 In [*] 的解决办法
  6. 巧用Option键,提升Mac工作效率(二)
  7. 什么是绿色软件,如何制作绿色软件(转载)- -
  8. 网络交换机端口管理工具
  9. 链接平台负责人对百度绿萝算法的控诉
  10. 将文本转换成HTML