Iris的R语言命令工具箱(1)
Iris的R语言命令工具箱(1)
最近在做数据分析,使用了R语言做了些数据处理和可视化,在此记下遇到过的问题、应用过的命令、处理方式以及工具包~
版权声明:本文为博主原创文章,转载请注明本文地址。http://www.cnblogs.com/o0Iris0o/p/6365927.html
1.CSV格式文件数据导入导出
1.1 导入CSV数据(导入CSV数据之后储存为“Data Frame数据框”数据结构)
## 导入csv数据
## 第一行没有表头
mytable <- read.csv("/FilePath/read.csv", sep=",", header=FALSE)
## 第一行有表头
mytable <- read.csv("/FilePath/read.csv", sep=",", header=TRUE)
## 手动选择文件读入
mytable <-read.table(file.choose(),stringsAsFactors=FALSE,header = FALSE)
1.2 导出CSV数据
write.csv(mytable,"/FilePath/write.csv",row.names = FALSE)
2.删除指定变量或对象
1、直接删除
> a<-c(1,2,3)
> rm(a)
2、以字符串形式的方式删除
> a<-c(1,2,3)
> rm('a')
3、删除不再需要的对象
在使用R语言的过程中,除了要保留特定的对象外,其他的对象不再需要
> a<-ls()
> rm(list=a[which(a!='c2' & a !='m2' & a !='cpu1' & a !='mem1')])
> ls()
[1] "a" "c2" "cpu1" "m2" "mem1"
如这个例子中,除了a,c2,cpu1,m2,mem1变量或对象外,其他的对象和变量均删除
4、对象的查找
有时,需要查找已经存在哪些变量,可根据名字来查找:
> objects(pattern='^m.*')
查找以m开头的对象,pattern为模式(匹配规则)
3.数据框Data Frame的操作
参考博客:http://www.cnblogs.com/studyzy/p/4316118.html
**
**
初始化Data Frame
## 例:初始化一个student的Data Frame
student<-data.frame(ID=c(11,12,13),Name=c("Devin","Edward","Wenli"),Gender=c("M","M","F"),Birthdate=c("1984-12-29","1983-5-6","1986-8-8"))
此时查看student的内容为:
ID Name Gender Birthdate
1 11 Devin M 1984-12-29
2 12 Edward M 1983-5-6
3 13 Wenli F 1986-8-8
查看列名:使用names函数
##查看列名:使用names函数
names(student)
##查看行名:使用到row.names函数
row.names(student)
##若希望将 ID 作为行名
row.names(student)<-student$ID
##或在初始化date.frame的时候,有参数row.names可以设置行名的向量
访问元素
##访问第一行:
student[1,]
##访问第二列:
student[,2]
##使用列的Index或者列名可以选取要访问的哪些列。比如要ID、Name和Gender
##注意下标第一个元素就是1
IdNameGender<-student[1:3]
##另一种方法
IdNameGender<-student[c("ID","Name","Gender")]
##如果是只访问某一列,返回的是Vector类型的,那么可以使用双层括号[[]]或者$来访问
##例如访问student的Name
name<-student[[2]]
##或者
name<-student[["Name"]]
##或者
name<-student$Name
##使用attach和detach函数可以使得访问列时不需要总是跟着变量名在前面
##比如要打印所有Name:
attach(student)
print(Name)
detach(student)
##还可以换一种简洁一点的写法就是用with函数
with(student,{
n<-Name
print(n)
})
##这里的n作用域只在大括号内
##如果想在with函数中对全局的变量进行赋值,那么需要使用"<<-"这样一个运算符。
合并两个Data Frame
tableall = merge(table1,table2,all.x = TRUE, all.y = TRUE)
4.对于CSV/Excel时间数据的处理-as.POSIXct()函数
将时间数据转化为时间格式
CSV/Excel文件导入成Data Frame格式数据之后,原先在CSV/Excel中的时间格式数据如“2016-02-11 03:42:10.724”被储存为“numeric”格式,如果不更改格式,在后续可视化处理的时候(如以时间为X轴,画散点图折线图)就会遇到问题
解决方法:
##将mytable中名为Time的列转化为时间格式
mytable$Time<-as.POSIXct(mytable$Time)
as.POSIXct(c,'%Y-%m-%d %H:%M',tz='UTC')
as.POSIXct(c,'%Y/%m/%d %H:%M',tz='UTC')
##另:as.Date截取日期部分转化成时间格式
c="2008/2/25 0:20"
as.Date(c,'%Y/%m/%d %H:%M')
##结果为: 2008-02-25
5.数据预处理-“dplyr”和“tidyr”扩展包
此处我只应用它做了简单的筛选,关于更多详细用法链接如下
扩展阅读:http://www.cnblogs.com/shangfr/p/6110614.html
扩展阅读:http://www.360doc.com/content/15/0824/21/18847742\_494543772.shtml
##安装扩展包
install.packages("dplyr")
install.packages("tidyr")
##筛选数据,清洗数据
##将过长过大的数据集转换为显示更友好的 tbl_df 类型
tablefilter <- tbl_df(table)
result1<-filter(tablefilter,tablefilter$Price<20.5)
result2<-filter(tablefilter, tablefilter$Num<10 | tablefilter1$Price>1100)
result3<-filter(tablefilter, Month == 1 | Month == 2)
6.计算方差、样本均值、标准差等-apply函数族
apply族函数详解:
博客1:http://blog.csdn.net/wltom1985/article/details/50403720
博客2:http://blog.sina.com.cn/s/blog\_403aa80a010174dj.html
## 计算方差、样本均值、标准差等
## 1代表行,2代表列
例1:xx <- matrix(1:20, 4, 5)
colMeans(xx) #列均值
colSums(xx) #列和
其余大部分都要用到apply()函数
例2:xx <- matrix(1:20, 4, 5)
apply(xx, 2, mean) #列均值,等同于colMeans(xx)
apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。
apply(xx, 1, var) #行方差
apply(xx, 2, max) #每列最大值
apply(xx, 2, rev) #每列的数反排列
apply(data,2,sd) #列标准差
7.相关性分析
pearson、spearman相关分析及相关系数矩阵可视化
## cor(mytable) 对mytable所有属性进行相关性分析
##(相关性分析不支持时间戳格式的列以及方差为0的列,应先删去对应列)
corrp<-cor(table1) ## 默认是pearson相关分析
corrs <- cor(table1[4:14],method = 'spearman') ## spearman相关分析
## 相关性分析可视化
## 需要下载corrplot扩展包
install.packages("corrplot")
corrplot(corr = corrp,method="square")
## corrplot(corr = corrs, method = 'color', addCoef.col="grey")
更多关于corrplot扩展包:https://sanwen8.cn/p/139qu99.html
8.取消科学计数法:
options(scipen=200) ##取消科学计数法
9.ggplot扩展包
-见Iris的R语言命令工具箱(2) 明天继续~
Iris的R语言命令工具箱(1)的更多相关文章
- R 语言命令行参数处理
在unix.windows外部需要调用R脚本执行,然后又需要输入不同的参数,类似shell脚本的命令行参数输入,可以使用Rcript命令实现. 命令格式:Rscript [options] [-e e ...
- R语言命令行参数
批量画图任务中,需要在R中传入若干参数,之前对做法是在perl中每一个任务建立一个Rscript,这种方式超级不cool,在群里学习到R的@ARGV调用方式,差不多能够达到批量任务的要求: a ...
- R语言命令汇总
> qqplot(spear,fastrankweight)> qqplot(spear,fastrankweight,main="title")> qqplot ...
- linux命令行下使用R语言绘图
系统:centos 6.4 64bit 环境安装参考:http://hi.baidu.com/solohac/item/4a18e78f1bef9b5825ebd99c 在R语言中可以使用png()等 ...
- R语言分析(一)-----基本语法
一, R语言所处理的工作层: 解释一下: 最下面的一层为数据源,往上是数据仓库层,往上是数据探索层,包括统计分析,统计查询,还有就是报告 再往上的三层,分别是数据挖掘,数据展现和数据决策. 由上图 ...
- R语言
什么是R语言编程? R语言是一种用于统计分析和为此目的创建图形的编程语言.不是数据类型,它具有用于计算的数据对象.它用于数据挖掘,回归分析,概率估计等领域,使用其中可用的许多软件包. R语言中的不同数 ...
- 【Introduction】R语言入门关键小结
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...
- 对数据集做标准化处理的几种方法——基于R语言
数据集——iris(R语言自带鸢尾花包) 一.scale函数 scale函数默认的是对制定数据做均值为0,标准差为1的标准化.它的两个参数center和scale: 1)center和scale默认为 ...
- R语言如何将字符串转变为命令执行
这里用到 eval() 和 parse() 函数.首先使用 parse() 函数将字符串转化为表达式(expression),而后使用 eval() 函数对表达式求解.x <- 1:10a &l ...
随机推荐
- Bar Chart of Frequency of modals in different sections of the Brown Corpus
Natural Language Processing with Python Chapter 4.8 colors = 'rgbcmyk' # red, green, blue, cyan, mag ...
- iOS推送跳转AppDelegate跳转VC
在开发项目中,会有这样变态的需求: 推送:根据服务端推送过来的数据规则,跳转到对应的控制器 feeds列表:不同类似的cell,可能跳转不同的控制器(嘘!产品经理是这样要求:我也不确定会跳转哪个界面哦 ...
- octave之奇巧淫技向量化计算实现寻找样本点所属聚类下标
前面有文章提到过,K-means算法,第一步骤是找出样本点的的所属聚类.下面用两种方式实现,一种是普通的循环,一种是完全向量化计算. 假设 : X 是m×n样本矩阵,其每一行是一个样本,m表示样本数目 ...
- lPC1788驱动SDRAM
Sdram型号为hy57v256 #ifndef __SRAM_H_ #define __SRAM_H_ #include "common.h" #include "de ...
- LPC1768的IIS通讯
IIS是飞利浦公司定义的一种用于音频传输的数字总线,LPC1768支持该总线, I2S接口为一条3线串行总线,含有1根数据线.1根时钟线和1根字选择信号线.基本的I2S连接具有一个主机(其总是为主机) ...
- 字典NSDictionary的常见用法
// 动态获取字典的第一个典 NSString *firstKey = responseObject.keyEnumerator.nextObject;
- 怎样简单的制作一个CHM格式的帮助文档?
http://jingyan.baidu.com/article/d8072ac446eb7bec95cefd0e.html 怎么制作CHM格式电子书 http://jingyan.baidu.com ...
- 【动态规划】Gym - 101102A - Coins
Hasan and Bahosain want to buy a new video game, they want to share the expenses. Hasan has a set of ...
- 用while判读循环语句1+1/2!+1/3!+...1/20!的和阶乘的计算方法 式:n!=n*(n-1)!
package com.chongrui.test; /* *用while判读循环语句1+1/2!+1/3!+...1/20!的和 *使用BigDecimal类完成大数字与高精度运算 公式:n!=n* ...
- checkbox、radio控件和文字不对其
一般使用html控件的时候 单选按钮和复选框的控件和文字不对齐 给input控件加上 style="vertical-align: middle; margin-top: -2px; ...