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)的更多相关文章

  1. R 语言命令行参数处理

    在unix.windows外部需要调用R脚本执行,然后又需要输入不同的参数,类似shell脚本的命令行参数输入,可以使用Rcript命令实现. 命令格式:Rscript [options] [-e e ...

  2. R语言命令行参数

        批量画图任务中,需要在R中传入若干参数,之前对做法是在perl中每一个任务建立一个Rscript,这种方式超级不cool,在群里学习到R的@ARGV调用方式,差不多能够达到批量任务的要求: a ...

  3. R语言命令汇总

    > qqplot(spear,fastrankweight)> qqplot(spear,fastrankweight,main="title")> qqplot ...

  4. linux命令行下使用R语言绘图

    系统:centos 6.4 64bit 环境安装参考:http://hi.baidu.com/solohac/item/4a18e78f1bef9b5825ebd99c 在R语言中可以使用png()等 ...

  5. R语言分析(一)-----基本语法

      一, R语言所处理的工作层: 解释一下: 最下面的一层为数据源,往上是数据仓库层,往上是数据探索层,包括统计分析,统计查询,还有就是报告 再往上的三层,分别是数据挖掘,数据展现和数据决策. 由上图 ...

  6. R语言

    什么是R语言编程? R语言是一种用于统计分析和为此目的创建图形的编程语言.不是数据类型,它具有用于计算的数据对象.它用于数据挖掘,回归分析,概率估计等领域,使用其中可用的许多软件包. R语言中的不同数 ...

  7. 【Introduction】R语言入门关键小结

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  8. 对数据集做标准化处理的几种方法——基于R语言

    数据集——iris(R语言自带鸢尾花包) 一.scale函数 scale函数默认的是对制定数据做均值为0,标准差为1的标准化.它的两个参数center和scale: 1)center和scale默认为 ...

  9. R语言如何将字符串转变为命令执行

    这里用到 eval() 和 parse() 函数.首先使用 parse() 函数将字符串转化为表达式(expression),而后使用 eval() 函数对表达式求解.x <- 1:10a &l ...

随机推荐

  1. rsync+inotify实现数据的实时备份

    一.rsync概述 1.1.rsync的优点与不足 rsync与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需 ...

  2. 转载:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.Annotation

    转载:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.Annotation (2012 ...

  3. NSString之Format

    三点用法总结: 类型转换:基本类型到对象类型 需要调用NSString的fotmat方法 NSString  *location = [NSString  stringWithFormat:@&quo ...

  4. php 设计模式系列(一)

    参考文章:http://duchengjiu.iteye.com/blog/2227452 多态代码 // 多态, 在JAVA中是这样用的, 其实在PHP当中可以自然消除, 因为参数是动态的, 你传什 ...

  5. Content Provider 小结

    Android中的四大组件之一ContentProvider,它支持多个应用间进行存储和读取数据等操作,实现不同应用间的数据共享. ContentProvider,解释为内容提供商.顾名思义,就是对外 ...

  6. Java加密解密字符串

    http://www.cnblogs.com/vwpolo/archive/2012/07/18/2597232.html Java加密解密字符串   旧文重发:http://www.blogjava ...

  7. C++的封装性

    C++的封装性 C++的阶段,我想根据C++的一些特有的特性分别写一些专题,每个专题我都捎带讲一些语法,当然不会很多,我还是会像C语言那样,内存结构贯穿始终,有汇编就有真相…… 本专题,我们讲述封装性 ...

  8. poj 3641 ——2016——3——15

    传送门:http://poj.org/problem?id=3461 题目大意:给你两个字符串p和s,求出p在s中出现的次数. 题解:这一眼看过去就知道是KMP,作为模板来写是最好不过了.... 这道 ...

  9. IM 融云 之 初始化及登录

    融云是没有用户体系的,用户登录需要获取token,测试时可以使用网站提供的接口,但是正式是要通过服务器调用专门的接口从融云获取的.并且我没看到融云的重连机制,不知道是否已在SDK内部实现. 现在看来, ...

  10. c#和java中的方法覆盖——virtual、override、new

    多态和覆盖 多态是面向对象编程中最为重要的概念之一,而覆盖又是体现多态最重要的方面.对于像c#和java这样的面向对象编程的语言来说,实现了在编译时只检查接口是否具备,而不需关心最终的实现,即最终的实 ...