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程序设计语言练习题1-12
练习1-12 编写一个程序,以每行一个单词的行驶打印其输入. 代码如下: #include <stdio.h> // 包含标准库的信息. int main() // 定义名为main的函数 ...
- Kafka笔记--使用ubuntu为bocker(服务器)windows做producer和comsumer(客户端)
原文连接:http://www.cnblogs.com/davidwang456/p/4201875.html 程序仍然使用之前的一篇博文中的例子 :http://www.cnblogs.com/gn ...
- matlab图像处理
matlab图像处理 转自:http://www.cnblogs.com/lovebay/p/5094146.html 1. 图像和图像数据 缺省情况下,MATLAB将图像中的数据存储为双精度类型(d ...
- 使用Query 进行空值(empty)校验
效果如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 页面正在载入js
页面显示(pageshow)和页面隐藏(pagehide)事件 http://blog.163.com/jiang_tao_2010/blog/static/121126890200911403336 ...
- HTTP断点续传(分块传输)(HTTP头格式非常清楚)
简述 断点续传:指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分, ...
- 【转】putty基本操作--不错
原文网址:http://www.cnblogs.com/skynext/p/3256035.html putty基本操作 1,进入全屏 标题栏右键,菜单中就有full screen选项. 2,退出全屏 ...
- Paint House II 解答
Question There are a row of n houses, each house can be painted with one of the k colors. The cost o ...
- java对象在hibernate持久层的状态
站在持久化层的角度,一个java对象在它的生命周期中,可处于以下4个状态之一: 临时状态(transient):刚刚用new语句创建,还没有被持久化,并且不处于Session的缓存中. 持久化状态(p ...
- Swift 新语言开发
全书文件夹: 一.Welcome to Swift 二.Language Guide 三.Language Reference /* 译者的废话: 几个小时前熬夜看了WWDC,各种激动,今年非常有料啊 ...