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数据格式,从而大幅提高了数据处理速度,并且提供了 ...
随机推荐
- Python新手学习基础之条件语句——elif语句
elif语句 (相当于C语言的else if) 在Python中,当我们需要有更多的判断条件时,我们往往会使用另外一种语法表达,即使用elif: if 判断条件1: 执行语句1 elif 判断条件2: ...
- HTML&CSS基础学习笔记1.8-预格式文本
<pre>标签的主要作用是预格式化文本.被包围在 pre 标签中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码 ...
- Cassandra笔记--2. 安装
1. 从apache官网下载Cassandra,我用的版本是2.1.8.压缩包解压,这里的目录是D:\cassandra\apache-cassandra-2.1.8 2. 配置环境变量 添加环境变 ...
- Nexus Root Toolkit教程——刷机
Nexus Root Toolkit是Nexus系列设备专属解锁.root.刷机.修复工具.本教程以Nexus7二代刷安卓5.0 Lollipop系统为实例演示刷机过程. 标签: 安卓5.0刷机教程 ...
- Android获取文件夹路径 /data/data/
首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下.所有内部存储中保存的文件在用户卸载应用的时候会被删除. 一. files1 ...
- (2) 假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等
/** * 第一种方式: * 实现思路:将字符串通过getBytes方法转换为byte数组,或者通过toCharArray()转换为char数组 * 然后先调用Arrays的sort方法进行排序,再调 ...
- 数据库 SQL语句优化
温馨提示:本篇内容均来自网上,本人只做了稍微处理,未进行细致研究,仅当做以后不备之需,如若你喜欢可尽情转走. 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图 ...
- phpmyadmin导入大量数据比较快的做法
在一次项目在其他机器上配置的时候,将数据库以.sql的形式导出后,在新的机器上想将数据重新导入phpmyadmin的时候.按照以前的在数据库中将所有数据复制过来然后点击sql运行给卡住了(数据量过大) ...
- MYSQL查询男女数量的存储过程
存储过程代码: BEGIN IF sex_id =0 THEN SELECT COUNT(*) FROM mybatis.p_user WHERE p_user.sex='女' INTO sex_co ...
- Linux应用开发环境搭建
因为笔者是一名大学生,对Linux内核开发方向非常感兴趣,可是实在是能(ji)力(shu)有(cha)限(jin),仅仅能从Linux应用开发開始,由浅入深,逐步进步,登上人生高峰,因此,昨天搭建了开 ...