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数据格式,从而大幅提高了数据处理速度,并且提供了 ...
随机推荐
- flask开发restful api系列(2)
继续上一章所讲,上一章我们最后面说道,虽然这个是很小的程序,但还有好几个要优化的地方.先复制一下老的view.py代码. # coding:utf-8 from flask import Flask, ...
- 【好程序员笔记分享】——iOS开发之使用TextField作为搜索框
-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ iOS开发之使用TextField作为搜索框 今天给大家带来一个新的技巧,比如平时我们要使用代码创建一 ...
- Idea使用记录--添加Problems&&解决Autowired报错could not autowire
今天在使用Idea的时候,发现Idea在整个每次找到错误代码非常不方便(Idea如果类中有错误,没有打开过类并不会提示,比如构建工程后缺少jar包问题).我想快速看到工程哪里出问题类似于eclipse ...
- 将日期yyyy-MM-dd转为数字大写的形式
/** * 将日期转大写 * 例如:2013-05-13转为 二0一三年五月十三日 * @param date * @return */ public static String getDxDate( ...
- 格式化用jad反编译混淆过的代码,能去大部分错误 (zhuanzai)
http://blog.csdn.net/chruan/article/details/8484783
- Windows进程间通信的各种方法
原文:Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成.多进程/多线程是Windows操作系 ...
- pywin32 安装错误 ImportError: DLL load failed: 不是有效的 Win32 应用程序
pywin32 安装错误 ImportError: DLL load failed: 不是有效的 Win32 应用程序. 发现是因为没有制定Pywin32的dll所致,我们在用Pywin32开发时, ...
- penetration testers渗透测试,hack,vnc,nat,
penetration testers渗透测试,hack,vnc,nat,
- 面试题32.从1到n整数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从 1到12这些整数中包含1的数字中1,10,11和12,1一共出现了5次 本题可以直接变量1到n的n个数然后分别计 ...
- poj 3186 Treats for the Cows(区间dp)
Description FJ has purchased N (1 <= N <= 2000) yummy treats for the cows who get money for gi ...