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语言基础学习基本数据类型-其他整数类型
其他整数类型 初学C语言时,int类型会满足你对整数的大多数需求. C语言还提供了三个关键字用以修饰基本的整数类型:short.long和unsigned.有以下几个注意点: (1)C语言没有具体规定 ...
- ie6兼容性
文本重复Bug 在IE6中,一些隐藏的元素(如注释.display:none;的元素)被包含在一个浮动元素里,就有可能引发文本重复bug.解决办法:给浮动元素添加display:inline;. 躲猫 ...
- SPI协议总结
四种工作模式: Mode 0 CPOL=0, CPHA=0 Mode 1 CPOL=0, CPHA=1Mode 2 CPOL=1, CPHA=0 Mode 3 CPOL=1, CPHA=1 常使用Mo ...
- 关于Linux平台malloc的写时拷贝(延迟分配)【转】
Linux内核定义了“零页面”(内容全为0的一个物理页,且物理地址固定),应用层的内存分配请求,如栈扩展.堆分配.静态分配等,分配线性地址后,就将页表项条目指向“零页面”(指定初始值的情况除外),这样 ...
- 【原创】基于部署映像服务和管理(DISM)修改映象解决WIN7 USB3.0安装时报错
本文作者为博客园阿梓喵http://www.cnblogs.com/c4isr/,转载请注明作者. 本文源地址:http://www.cnblogs.com/c4isr/p/3532362.html ...
- pfsense 2.2RC下的L2TP配置
还不有测试完成,不过,基本上应该差不多了. 主要参考以下文档: http://blog.sina.com.cn/s/blog_541a3cf10101ard3.html http://thepract ...
- OpenUrl 的跨平台实现
OpenUrl 是 iOS 中 UIApplication 提供的一个函数,用于调用其它程序.实际上各个平台都有自己的实现,这里提供一个直接封装完的跨平台版本给大家. Delphi ...
- Qt C++中的关键字explicit——防止隐式转换(也就是Java里的装箱),必须写清楚
最近在复习QT,准备做项目了,QT Creator 默认生成的代码 explicit Dialog(QWidget *parent = 0)中,有这么一个关键字explicit,用来修饰构造函数.以前 ...
- 【数位DP】 HDU 4734 F(x)
原题直通车:HDU 4734 F(x) 题意:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1, 求0.....B中F[x]<=F[A ...
- 1645: [Usaco2007 Open]City Horizon 城市地平线
1645: [Usaco2007 Open]City Horizon 城市地平线 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 315 Solved: ...