R的数据操作与清洗
专门针对R语言的数据操作与数据清洗环节,提供一些操作上的小技巧以及前沿尝试。
悟乙己
心如花木,皆向阳而生!
展开
-
R语言自动化报告格式——knitr
R语言自动化报告格式——knitr一、背景在R的世界里,凡是提到自动化报告,很多人就会想到Sweave,它已经诞生十几年了。它的主要设计思想来自于文学化编程(Literate Programming),这是Knuth大神提出来的一种编程范式,它与传统的结构化编程不同。knitr (发音为:nit-ter)是由纯文本 (就像你正在阅读的) 和R代码交织在一起的文档文件. 用作者的话来说就原创 2015-08-12 19:22:40 · 11271 阅读 · 1 评论 -
R语言数据集合并、数据增减、不等长合并
一、数据合并1、merge()函数最常用merge()函数,但是这个函数使用时候这两种情况需要注意:1、merge(a,b),纯粹地把两个数据集合在一起,没有沟通a、b数据集的by,这样出现的数据很多,相当于a*b条数据;2、merge函数是匹配到a,b数据集的并,都有的才匹配出来,如果a、b数据集ID不同,这个函数不够用。#横向合并ID<-c(1,2,3,4)name<-原创 2016-02-16 21:51:40 · 197825 阅读 · 7 评论 -
R语言与格式、日期格式、格式转化
每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~R语言的基础包中提供了两种类型的时间数据,一类是Date日期数据,它不包括时间和时区信息,另一类是POSIXct/POSIXlt类型数据,其中包括了日期、时间和时区信息。基本总结如下:日期data,存储的是天;时间POSIXct 存储的是秒,POSIXlt 打散,年月日不同;日期-时间=不可运算。一般来...原创 2016-02-16 22:12:33 · 145165 阅读 · 2 评论 -
R语言︱数据集分组、筛选(plit – apply – combine模式、dplyr、data.table)
R语言︱数据集分组大型数据集通常是高度结构化的,结构使得我们可以按不同的方式分组,有时候我们需要关注单个组的数据片断,有时需要聚合不同组内的信息,并相互比较。一、日期分组1、关于时间的包都有很多很好的日期分组应用。2、cut()函数cut(x, n):将连续型变量x分割为有着n个水平的因子cut(x, breaks, labels = NULL, include.lowest = FALS...原创 2016-02-18 21:02:18 · 119017 阅读 · 2 评论 -
R语言︱数据分组统计函数族——apply族用法与心得
1、apply函数对一个数组按行或者按列进行计算,矩阵纵、横运算(sum,average等)> ma <- matrix(c(1:4, 1, 6:8), nrow = 2)> ma [,1] [,2] [,3] [,4][1,] 1 3 1 7[2,] 2 4 6 8> apply(ma, c(1,2), sum)原创 2016-04-07 15:55:40 · 43692 阅读 · 1 评论 -
R语言︱缺失值处理
1、缺失值由0代替dat[is.na(dat)] 跟逻辑向量的使用很有关 y <- x[!is.na(x)] #表示将向量x中的非NA元素赋给y; (x+1)[(!is.na(x)) & x>0] -> z #表示创建一个对象z,其中的元素由向量x+1中与x中的非缺失值和正数对应的向量组成x[is.na(x)]原创 2016-04-08 23:37:40 · 15667 阅读 · 0 评论 -
R语言︱文件读入、读出一些方法罗列(批量xlsx文件、数据库、文本txt、文件夹)
笔者寄语:批量读取目前看到有以下几种方法:xlsx包、RODBC包、批量转化成csv后读入。xlsx包首先尝试用R包解决。即xlsx包。xlsx包在加载时容易遇到问题。基本都是由于java环境未配置好,或者环境变量引用失败。因此要首先配置java环境,加载rJava包。百度了一下,网上已有很多解决方案。我主要是参考这个帖子,操作步骤为:1、 安装最新版本原创 2016-04-08 23:44:09 · 70671 阅读 · 8 评论 -
R语言︱用excel VBA把xlsx批量转化为csv格式
笔者寄语:批量读取目前看到有以下几种方法:xlsx包、RODBC包、批量转化成csv后读入。本章来自博客:http://www.cnblogs.com/weibaar/p/4506144.html在上面的尝试已经发现,xlsx本身就是这个复杂问题的最根本原因。与之相反,R对csv等文本格式支持的很好,而且有fread这个神器,要处理一定量级的数据,还是得把xlsx转化为csv格转载 2016-04-08 23:56:55 · 12034 阅读 · 0 评论 -
R语言︱文本(字符串)处理与正则表达式
处理文本是每一种计算机语言都应该具备的功能,但不是每一种语言都侧重于处理文本。R语言是统计的语言,处理文本不是它的强项,perl语言这方面的功能比R不知要强多少倍。幸运的是R语言的可扩展能力很强,DNA/RNA/AA等生物序列现在已经可以使用R来处理。R语言处理文本的能力虽然不强,但适当用用还是可以大幅提高工作效率的,而且有些文本操作还不得不用。高效处理文本少不了正则表达式转载 2016-04-11 15:22:41 · 70071 阅读 · 4 评论 -
R语言︱非结构化数据处理神器——rlist包
本文作者:任坤,厦门大学王亚南经济研究院金融硕士生,研究兴趣为计算统计和金融量化交易,pipeR,learnR,rlist等项目的作者。近年来,非关系型数据逐渐获得了更广泛的关注和使用。下面分别列举了一个典型的关系型数据表和一个典型的非关系型数据集。关系型数据:一组学生的基本数据,包括姓名(Name)、性别(Gender)、年龄(Age)以及专业(Major)。转载 2016-04-11 17:02:50 · 9743 阅读 · 0 评论 -
R语言︱list用法、批量读取、写出数据时的用法
列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可 以是任意对象,不同元素不必是同一类型。元素本身允许是其它复杂数据类型,比如,列表 的一个元素也允许是列表。例如:> rec <- list(name="李明", age=30, scores=c(85, 76, 90))> rec$name[1] "李明" $age[1] 30 $scor...原创 2016-04-11 17:06:46 · 208062 阅读 · 16 评论 -
R语言︱排序问题
四、数据排序1、sort(),rank(),order()函数Sort排序(默认升序,decreasing=T时为降序)Order排序(默认升序,decreasing=T时为降序)在R中,和排序相关的函数主要有三个:sort(),rank(),or原创 2016-04-18 16:25:09 · 82759 阅读 · 0 评论 -
R语言︱构造新序列
1、数值构造函数rep与seq#数值构造rep与seqrep(1:4,each=2)#依次重复1:4两遍rep(1:4,2) #注意,重复1:4两遍seq(from=3,to=5,by=0.2)rep(seq(from=3,to=5,by=0.2),2) #混合使用2、字符构造pasteseq代表是ck与数值1 之间用啥记号,如:ck_1,ck*2collapse原创 2016-04-18 20:01:14 · 3266 阅读 · 0 评论 -
R语言︱基本函数、统计量、常用操作函数
1、一些简单的基本统计量#基本统计量sum/mean/sd/min #一些基本统计量which.min() #找出最小值的序号2、向量向量在循环语句中较为广泛#向量#向量在循环语句中较为广泛M=vector(length = 8);M #生成一个长为8的布尔向量M[1]="1";M #赋值之后就会定义为字符原创 2016-04-18 20:50:39 · 48809 阅读 · 1 评论 -
R语言︱数据去重
笔者寄语:unique对于一个向量管用,对于matrix、data frame那些就不管用了。(谢益辉)查看重复的方式,有点像分类变量个数一样,unique() 或者 table() 都是很好的方式去检测。1、unique函数> rt 年 月 公司名 利率1 2000 1 A a2 2000 1 A a3 200原创 2016-04-19 10:09:44 · 49346 阅读 · 2 评论 -
R语言︱画图
笔者寄语:不论画啥,你先plot准没错。1、plot函数##画图plot(x~y,xlab="",ylab="",main="",xlim=c(0,45),ylim=c(0,45),pch=18,col=2,cex=5)#xlab/ylab,xy标题#main,主标题#xlim,ylim,xy线段范围#pch,点的类型(圆形、棱形等)#col,线条的颜色#cex,点的原创 2016-04-19 11:18:22 · 6018 阅读 · 0 评论 -
R语言︱函数使用技巧(循环、if族/for、switch、repeat、ifelse、stopifnot)
1、循环##循环foririsallzl=unique(iris$setosa)for (i in 1:2){ pp=iris[iris$setosa==allzl[i],] plot(pp$Sepal.Length~pp$Sepal.Width)}2、switch分支语句##switch分支语句switch(1,mean(1:10),rnorm(4)) #执行原创 2016-04-19 17:09:39 · 84826 阅读 · 3 评论 -
R语言︱分布函数与概率密度+随机数产生
1、常见概率分布##正态分布pnorm(1.96) #P(x<=1.96)时的分布概率pnorm(1.96,0,1) #上同pnorm(1.96,lower.tail = F) #P(x>1.96)注意与pnorm的区别qnorm(0.975) #已知分布概率求x值dnorm(0)原创 2016-04-19 17:29:41 · 26277 阅读 · 0 评论 -
R语言︱R社区的简单解析(CRAN、CRAN Task View)
笔者寄语:菜鸟笔者一直觉得r CRAN离我们大家很远,在网上也很难找到这个社区的全解析教程,菜鸟我早上看到一篇文章提到了这个,于是抱着学渣学习的心态去看看这个社团的磅礴、威武。CRAN(The Comprehensive R Archive Network):全面R档案网站1、R社区——主界面:https://www.r-project.org/主要功能:提供下载、最新原创 2016-04-20 10:24:23 · 11800 阅读 · 0 评论 -
R语言︱异常值检验、离群点分析、异常值处理
笔者寄语:本文是《R语言数据分析与挖掘实战》异常值处理一般分为以下几个步骤:异常值检测、异常值筛选、异常值处理。其中异常值检测的方法主要有:箱型图、简单统计量(比如观察极值)异常值处理方法主要有:删除法、插补法、替换法。提到异常值不得不说一个词:鲁棒性。就是不受异常值影响,一般是鲁棒性高的数据,比较优质。一、异常值检验异常值大概包括缺失值、离群值、重复值原创 2016-04-21 20:25:28 · 121623 阅读 · 7 评论 -
R + python︱数据规范化、归一化、Z-Score
笔者寄语:规范化主要是因为数据受着单位的影响较大,需要进行量纲化。大致有:最小-最大规范化、均值标准化、小数定标规范化1、最小-最大规范化也叫离差标准化,是对原始数据的线性变换,将数据映射到[0,1]之间,与功效系数法相同。#最小-最大规范化b1=(data[,1]-min(data[,1]))/(max(data[,1])-min(data[,1]))b2原创 2016-04-23 21:35:32 · 41098 阅读 · 1 评论 -
R语言︱集合运算——小而美法则
集合运算的一般规则如下: union(x,y) #求并集 intersect(x,y) #求交集 setdiff(x,y) #求属于x而不属于y的所有元素 setequal(x,y) #判断x与y是否相等 a %in% y #判断a是否为y中的元素 choose(n, k) #n个里面取k个的组合数原创 2016-04-28 21:08:09 · 18060 阅读 · 0 评论 -
R语言︱ 数据库SQL-R连接与SQL语句执行(RODBC、sqldf包)
数据库是极其重要的R语言数据导入源数据之地,读入包有sqldf、RODBC等。一、数据库读入——RODBC包RODBC包中能够基本应付数据库读入。一般数据数据库读入过程中主要有:连接数据库(odbcConnect)、读入某张表(sqlFetch)、读某表某指标(sqlQuery)、关闭连接(close)还有一些功能:把R数据读入数据库(sql原创 2016-06-07 10:22:35 · 35989 阅读 · 1 评论 -
R语言︱噪声数据处理、数据分组——分箱法(离散化、等级化)
分箱法在实际案例操作过程中较为常见,能够将一些数据离散化,等级化,比如年龄段,我们并不想知道确切的几岁,于是乎可以将其分组、分段。基础函数中cut能够进行简单分组,并且可以用于等宽分箱法。cut函数:cut(x, n):将连续型变量x分割为有着n个水平的因子[plain] view plain copy print?cut(x,原创 2016-11-25 17:06:55 · 41725 阅读 · 0 评论 -
R︱高效数据操作——data.table包(实战心得、dplyr对比、key灵活用法、数据合并)
由于业务中接触的数据量很大,于是不得不转战开始寻求数据操作的效率。于是,data.table这个包就可以很好的满足对大数据量的数据操作的需求。data.table可是比dplyr以及Python中的pandas还好用的数据处理方式。data.table包的语法简洁,并且只需一行代码就可以完成很多事情。进一步地,data.table在某些情况下执行效率更高。(参考来源:R高效数据原创 2016-10-24 17:27:55 · 31124 阅读 · 7 评论 -
手把手教你在Windows环境下升级R
在Windows环境下,我们可以使用installr包自动将R升级到最新版本。并且可以安装软件。下面主要演示如何在Windows环境下升级R,并将旧版本安装的R包复制到更新版本的R。1、加载installr包install.packages("installr")library(installr)2、在“installr”菜单中选择“update R”3、in转载 2016-05-20 15:15:13 · 7298 阅读 · 1 评论