R语言数据处理
写在前面:数据处理是数据分析与挖掘必不可少的步骤。下面列出一些常用的数据处理操作。
一、类型转换
用class()查看数据的类型,用as.类型名()进行类型转换。
> num <- as.numeric(c(1,2,3,4,5,6))
> num
[1] 1 2 3 4 5 6
> class(num)
[1] "numeric"
> char <- as.character(num)
> char
[1] "1" "2" "3" "4" "5" "6"
> data_frame <- as.data.frame(num)
> data_frame
num
1 1
2 2
3 3
4 4
5 5
6 6
二、缺失值处理
R语言中缺失值以NA表示,并且通过函数is.na()来检验数据是否存在空值。
> x <- c(1,2,3,4,NA)
> is.na(x) #返回一个逻辑向量值
[1] FALSE FALSE FALSE FALSE TRUE
> sum(x) #当向量中存在空值,统计结果也是空值
[1] NA
> sum(x,na.rm=TRUE) #很多函数都带有na.rm=TRUE的参数,此参数在运算时移除缺失值
[1] 10
> x[which(is.na(x))] <- 0 #which函数返回符合条件的相应位置
> x
[1] 1 2 3 4 0
> x <- c(1,2,3,4,NA)
> y <- c(5,6,NA,8,9)
> z <- data.frame(x,y)
> is.na(z)
x y
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] FALSE TRUE
[4,] FALSE FALSE
[5,] TRUE FALSE
> na.omit(z) #na.omit()函数可以直接删除缺失值所在的行
x y
1 1 5
2 2 6
4 4 8
三、排序
sort()用于向量的排序,order()用于多维的排序。
> sort(c(2,4,5,7,9,56),decreasing=TRUE) #默认是升序的排序
[1] 56 9 7 5 4 2
> data <- data.frame(ID=c('A','B','R','A','D'),Score=c(2,5,3,2,7))
> data[order(data$ID),] #按照ID列升序
ID Score
1 A 2
4 A 2
2 B 5
5 D 7
3 R 3
> data[order(data$ID,data$Score,decreasing=T),]
ID Score
3 R 3
5 D 7
2 B 5
1 A 2
4 A 2
四、去重(unique()函数用于去重)
> account <- c('账号A','账号B','账号B','账号C','账号A')
> dbname <- c('server1','server2','serever1','server1','server1')
> z <-data.frame(account,dbname)
> z
account dbname
1 账号A server1
2 账号B server2
3 账号B serever1
4 账号C server1
5 账号A server1
> unique(z$account) #按account指标去重,account变量为factor类型,因此带有level统计指标
[1] 账号A 账号B 账号C
Levels: 账号A 账号B 账号C
> unique(z[,1:2]) #度维度组合去重
account dbname
1 账号A server1
2 账号B server2
3 账号B serever1
4 账号C server1
五、数据匹配
数据匹配是一个很常用的操作,类似sql中的join操作。merge()可用于匹配两个数据框并进行数据合并,参数by=‘统一字段名’来进行匹配。
> name1 <- c('Jet','Tina','Melisa','Zu','Elliot')
> name2 <- c('Jet','Tina','Melisa','Stone','Dich')
> level <- c(21,31,34,15,53)
> pay <- c(1300,767,2929,190,778)
> data1 <- data.frame(name1,level)
> data2 <- data.frame(name2,pay)
> merge(data1,data2,by.x='name1',by.y='name2') #合并指定列相同的行
name1 level pay
1 Jet 21 1300
2 Melisa 34 2929
3 Tina 31 767
R语言数据处理的更多相关文章
- R语言数据处理利器——dplyr简介
dplyr是由Hadley Wickham主持开发和维护的一个主要针对数据框快速计算.整合的函数包,同时提供一些常用函数的高速写法以及几个开源数据库的连接.此包是plyr包的深化功能包,其名字中的字母 ...
- R语言数据处理包dplyr、tidyr笔记
dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了与其它数据库的接口:tidyr包的作者是Hadley ...
- R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...
- 【R笔记】R语言进阶之4:数据整形(reshape)
R语言进阶之4:数据整形(reshape) 2013-05-31 10:15 xxx 网易博客 字号:T | T 从不同途径得到的数据的组织方式是多种多样的,很多数据都要经过整理才能进行有效的分析,数 ...
- [3]R语言在数据处理上的禀赋——par参数详解(一)
本文目录 公共参数列表 par 颜色相关 字体相关 字体大小相关 线条相关 符号相关 线条和符号大小相关 结束 本文首发:program-dog.blogspot.com 注1:本文也曾在csdn发布 ...
- [2]R语言在数据处理上的禀赋之——可视化技术
本文目录 Java的可视化技术 R的可视化技术 二维做图利器plot的参数配置 *权限机制 *plot独有的参数 *plot的type介绍 *title介绍 *公共参数集合--par *par的权限机 ...
- R语言学习 第八篇:常用的数据处理函数
Basic包是R语言预装的开发包,包含了常用的数据处理函数,可以对数据进行简单地清理和转换,也可以在使用其他转换函数之前,对数据进行预处理,必须熟练掌握常用的数据处理函数,本文分享在数据处理时,经常使 ...
- R语言之数据处理常用包
dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了与其它数据库的接口:tidyr包的作者是Hadley ...
- R语言中的数据处理包dplyr、tidyr笔记
R语言中的数据处理包dplyr.tidyr笔记 dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了 ...
随机推荐
- C++得到最大的int值
要得到最大的int值: 1.利用(unsigned int)-1,这样得到的就是unsigned int表示的最大值. 2.int值只是比unsigned int多一位符号位,所以对(unsigned ...
- Robot Framework自动化测试环境的搭建
1.python-2.7.6.amd64.1394777203.msi 2.setuptools-28.0.0 3.pip-8.1.1 4.robotframework-2.8.7.win-amd64 ...
- mysql 查询表
判断表是否存在 SELECT table_name FROM information_schema.TABLES WHERE table_name ='yourname'; 判断存储过程是否存在 se ...
- [SDOI2008]仪仗队
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...
- iOS随机数-备
ios 有如下三种随机数方法: 1. srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % 5; 2. s ...
- QT creator中使用opencv采集摄像头信息
之前在QT creator上成功编译了opencv,由于课题需要,需要采集摄像头的信息.故搜集了网上的一些资料,依葫芦画瓢的照着做了一下,终于简单的成功采集了信息. 打开QTcreator,新建一个w ...
- java实现双向链表
PS:双向链表(每个节点含有指向前一个节点的前驱与后一个节点的后继) public class DoublyLinkedList { static class Node { private Objec ...
- KEIL中的变量相关
例:sfr P0=0x80表示P0口地址为80H:(sfr是字节操作) sfr16 T2=0xCC表示T2口地址的低地址为TL2=0XCC,高地址为TH2=0XCD(sfr16是字操作) 头文件reg ...
- day52
今天依旧 阅读2篇的整理 数学试卷一套 综合练习计算 政治视频一个 范帅长难句一个 翻译两句 作文大小各一个 linux基础 今天折腾最久的应该是linux了 自己重新手动安装了一下 遇到的不少问题在 ...
- IOS详解TableView——选项抽屉(天猫商品列表)
在之前的有篇文章讲述了利用HeaderView来写类似QQ好友列表的表视图. 这里写的天猫抽屉其实也可以用该方法实现,具体到细节每个人也有所不同.这里采用的是点击cell对cell进行运动处理以展开“ ...