注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

notes

@-@

 
 
 

日志

 
 
 
 

R语言快速入门  

2013-04-24 19:55:38|  分类: R |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、R的数据

R的基本数据包括数值、字符和逻辑。

数据的输入:实际工作中,大量的数据实际存储在文件或者数据库中,如何导入数据和访问数据?

data < - read.table("data.dat")这样数据就被读到importdata这个data frame里面了,数据可以是很多行和列的数据,通过edit(data)可以进行编辑。访问某一列则可以使用data$V5,这个表示访问第五列数据, 其中data$V5返回的是一个向量,而data[5]也可以访问第五列,但这个返回的是一个list。一些函数的运算,他的自变量必须是向量。

要读入其他更复杂的数据,可以参考使用一些其他的包和文件。

二、数据分析

常有的统计数据分析函数:

1、算术平均: mean(x)
2、中位数(中值):median(x)
3、最大值最小值:max(x), min(x)
4、方差:var(x)
5、标准差:sd(x)
6、相关系数:cor(x,y)
7、summary:summary(x),返回x向量的最小值、第一分位数(25%)、中值、平均值、第三分位数(75%)和最大值
8、fivenum:fivenum(x),返回和summary差不多,就是少了一个中值median
9、density:density(x),返回概率密度,可以用lines绘制出来。
待补充ing

三、数据绘图

绘图对于统计来说非常重要,R的绘图统计功能也是相当强大。下面简单的记录几个简单常用的。

1、plot

plot(x, y, …) 其中x, y都是向量,其余有用的附加参数有:

type : 绘图点的类型
main: 绘图的标题
sub: 小标题
xlim, ylim: xy轴的范围,也是个向量
xlab, ylab: xy轴的标题
col: 绘图点的颜色
log=x, log=y, log=(xy): xy轴为对数坐标
lwd: 绘图线的粗细

2、hist 绘制直方图

hist(x, ….) x 为一个向量,其余常用参数如下:

br, break: x轴分类的间隔,是个向量,可以根据需要调整x轴
probability: TRUE表示y轴为频率,而FALSE表示y轴为频数
3、lines

lines(x, …) 绘制一条连接线,x为向量,常用参数如上。

三、时间函数

这里将时间函数单列出来,是因为常常会用到。利用下面几个函数可以将字符串转换为时间序列。

比如

dates < - c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")
times <- c("23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26")
x <- paste(dates, times)
dt <- strptime(x, "%m/%d/%y %H:%M:%S")

dt就是一个时间序列了。


R常用命令

1.查看base包命令
library(help="base")

2.查看帮助
?lm
help("*")
help("mean")
help("bs", package = "splines") #在特定包里搜索
help("bs",try.all.packages=TRUE) #在所有包中搜索,默认只在内存加载的包中搜索
help.start()
help.search("tree")
help.search("tree", rebuild = TRUE)) #新安装包之后,需要rebuild
apropos("length")  #查找函数

3.赋值
a<-5
a=5
5->a

4.查看对象
ls(pattern="a")
ls(pat="^a")

5.删除对象
rm(a)
rm(pat="a")
rm(list=ls(pat="a"))

6.构建一个dataframe数据框
M <- data.frame(n1, n2, n3)

7.查看数据类型(共有四种:数值型,字符型,复数型7和逻辑型(FALSE或TRUE))
x <- 1
mode(x)
用Inf和-Inf表示正负无穷,NaN(not a number),NA(not available)

8.工作目录
getwd()
setwd("/home/paradis/R") #如果一个文件不在工作目录里则必须给出它的路径

9.读取文件
read.table(file="Q:/data_24.csv",header=T,sep = "\t",dec=".",quote="\"'")  #创建一个数据框
还有scan(前者可以指定变量的类型)
和read.fwf(以用来读取文件中一些固定宽度格式的数据)

#mydata$V1和mydata[, 1]是向量,而mydata["V1"]是数据框

10.存数据
write.table
write(x,file ="data.txt"),

工作空间保存加载:
用load("xyz.RData")
save.image()是save(list =ls(all=TRUE),
file=".RData")

11.生成数据
x <- 1:30 #1到30个整数序列
> 1:5
[1] 1 2 3 4 5
> 3;1
[1] 3
[1] 1
> 3:1
[1] 3 2 1
> 1:(10-1)
[1] 1 2 3 4 5 6 7 8 9

> seq(1, 5, 0.5)  #生成实数序列
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
> seq(length=9, from=1, to=5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

还可以用函数c直接输入数值:
> c(1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

如果想用键盘输入一些数据也是可以的,只需要直接使用默认选项
的scan函数:
> z <- scan()

函数rep用来创建一个所有元素都相同的向量:
> rep(1, 30)
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

#矩阵操作
> matrix(1:6, 2, 3,byrow=F)
[,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> matrix(1:6, 2, 3,byrow=T)
[,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

#维度控制
> x=1:15
> x
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
> dim(x)
NULL
> dim(x)<-c(5,3)
> x
[,1] [,2] [,3]
[1,]    1    6   11
[2,]    2    7   12
[3,]    3    8   13
[4,]    4    9   14
[5,]    5   10   15

12.数据框和列表

矩阵合并
rbind,基于行,cbind,基于列

> matrix<-rbind(1:7,1:7)
> matrix
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    1    2    3    4    5    6    7
[2,]    1    2    3    4    5    6    7

> matrix<-cbind(1:7,1:7)
> matrix
[,1] [,2]
[1,]    1    1
[2,]    2    2
[3,]    3    3
[4,]    4    4
[5,]    5    5
[6,]    6    6
[7,]    7    7

> x <- 1:4; n <- 10; M <- c(10, 35); y <- 2:4
> data.frame(x, y)
错误于data.frame(x, y) : 参数值意味着不同的行数 4, 3
> data.frame(x, M)
x  M
1 1 10
2 2 35
3 3 10
4 4 35
> data.frame(x, n)
x  n
1 1 10
2 2 10
3 3 10
4 4 10
> L1 <- list(x, y); L2 <- list(A=x, B=y)
> L1
[[1]]
[1] 1 2 3 4

[[2]]
[1] 2 3 4

> L2
$A
[1] 1 2 3 4

$B
[1] 2 3 4

> L2$A
[1] 1 2 3 4
> L2$B
[1] 2 3 4

> seq(10,11,0.2)
[1] 10.0 10.2 10.4 10.6 10.8 11.0
> c(1:5,seq(10,11,0.2))
[1]  1.0  2.0  3.0  4.0  5.0 10.0 10.2 10.4 10.6 10.8 11.0

> log2(4)
[1] 2
> log10(1e7)
[1] 7

#比较
> a<-"a"
> b<-"a"
> identical(a,b)
[1] TRUE
> all.equal(a,b)
[1] TRUE
> x=1:5
> x[1]
[1] 1
> x[4]
[1] 4
> x[5]
[1] 5
> x[0]
integer(0)
> x[0]=5
> x[0]
numeric(0)
> x[1]=5
> x[1]
[1] 5
> x
[1] 5 2 3 4 5
> i=c(1,2)
> x[i]
[1] 5 2

> x=matrix(1:3,2,3)
> x
[,1] [,2] [,3]
[1,]    1    3    2
[2,]    2    1    3
> x[2,]
[1] 2 1 3

> x[,2]
[1] 3 1
> x <- 1:10
> x[x>=5]
[1]  5  6  7  8  9 10

> x[x%%2==0]
[1]  2  4  6  8 10
> x[c(F,T)]
[1]  2  4  6  8 10
> x[c(T,F)]
[1] 1 3 5 7 9

#自定义行列名
> names(x)<-c("a","b","c")
> x
a b c
1 2 3
> x<-matrix(1:3,2,3)
> x
[,1] [,2] [,3]
[1,]    1    3    2
[2,]    2    1    3
> rownames(x)<-c("row1","row2")
> colnames(x)<-c("col1","col2","col3")
> x
col1 col2 col3
row1    1    3    2
row2    2    1    3
> dimnames(x)
[[1]]
[1] "row1" "row2"

[[2]]
[1] "col1" "col2" "col3"

> x<-array(1:8,dim=c(2,2,3))
> x
, , 1

[,1] [,2]
[1,]    1    3
[2,]    2    4

, , 2

[,1] [,2]
[1,]    5    7
[2,]    6    8

, , 3

[,1] [,2]
[1,]    1    3
[2,]    2    4

#向量运算
> x<-1:4
> y<-rep(1,4)
> z<-x+y
> z
[1] 2 3 4 5

#不同长度,循环使用
> x=1:2
> y=1:4
> x+y
[1] 2 4 4 6
> x
[1] 1 2
> y
[1] 1 2 3 4

#函数快速参考
sum(x) 对x中的元素求和
prod(x) 对x中的元素求连乘积
max(x) x中元素的最大值
min(x) x中元素的最小值
which.max(x) 返回x中最大元素的下标
which.min(x) 返回x中最小元素的下标
range(x) 与c(min(x), max(x))作用相同
length(x) x中元素的数目
mean(x) x中元素的均值
median(x) x中元素的中位数
var(x) or cov(x) x中元素的的方差(用n ? 1做分母);如果x是一个矩阵或者一
个数据框,将计算协方差阵
cor(x) 如果x是一个矩阵或者一个数据框则计算相关系数矩阵(如
果x是一个向量则结果是1)
var(x, y) or cov(x, y) x和y的协方差,如果是矩阵或数据框则计算x和y对应列的协方

cor(x, y) x和y的线性相关系数,如果是矩阵或者数据框则计算相关系数
矩阵。

round(x, n) 将x中的元素四舍五入到小数点后n位
rev(x) 对x中的元素取逆序
sort(x) 将x中的元素按升序排列;要按降序排列可以用命令rev(sort(x))
rank(x) 返回x中元素的秩
log(x, base) 计算以base为底的x的对数值
scale(x) 如果x是一个矩阵, 则中心化和标准化数据; 若只进行中心化
则使用选项scale=FALSE, 只进行标准化则center=FALSE( 缺省值
是center=TRUE, scale=TRUE)
pmin(x,y,...) 返回一个向量,它的第i个元素是x[i], y[i], . . . 中最小值
pmax(x,y,...) 同上,取最大值
cumsum(x) 返回一个向量,它的第i个元素是从x[1]到x[i]的和
cumprod(x) 同上,取乘积
cummin(x) 同上,取最小值
cummax(x) 同上,取最大值
match(x, y) 返回一个和x的长度相同的向量,表示x中与y中元素相同的元素在y中
的位置(没有则返回NA)
which(x == a) 返回一个包含x符合条件(当比较运算结果为真(TRUE)的下标的向
量,在这个结果向量中数值i说明x[i] == a(这个函数的参数必须是
逻辑型变量)
choose(n, k) 计算从n个样本中选取k个的组合数
na.omit(x) 忽略有缺失值(NA)的观察数据(如果x是矩阵或数据框则忽略相应的
行)
na.fail(x) 如果x包含至少一个NA则返回一个错误消息
unique(x) 如果x是一个向量或者数据框,则返回一个类似的对象但是去掉所有重
复的元素(对于重复的元素只取一个)
table(x) 返回一个表格,给出x中重复元素的个数列表(尤其对于整数型或者因子
型变量)
table(x, y) x与y的列联表
subset(x, ...) 返回x中的一个满足特定条件...的子集,该条件通常是进行比较运
算:x$V1 < 10;如果x是数据框,选项select给出要保留的变量(或
者用负号表示去掉)
sample(x, size) 从x中无放回抽取size个样本,选项replace = TRUE表示有放回的抽样

  评论这张
 
阅读(2562)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017