r语言初学者指南 r语言初学者指南 R初学者指南

Squid=read.table(file="squid.txt",header=TRUE)

Squid$Sex

factor(Squid$Sex) #试输出Squid$Sex和factor(Squid$Sex),两者的区别在于factor命令会多输出一行,Levels: 1 2,说明Sex有两个水平,1和2

Squid$fSex=factor(Squid$Sex) #将factor(Squid$Sex)存放到一个新的变量fSex中,在变量名前使用f用以表示它是名义变量,也被称为因子

Squid$fSex=factor(Squid$Sex,levels=c(1,2),labels=c("M","F")) #将因子fSex中的1,2转换为M,F

#将所有1和2转换为M和F后再用str命令查看数据框Squid,对比两次Squid发现框中多了fSex因子

查看Squid中的fSex因子:已经由原来的1,2转换为M,F了

使用fSex因子:

SquidM=Squid[Squid$fSex=="M",] #同时对比使用Sex变量SquidM=Squid[Squid$Sex==1,]

注:在这里,直接输入Squid$fSex不用加入factor即可显示出factor(Squid$Sex)的效果(在输出所有元素后额外显示多一行Levels: M F用以告诉我们fSex由两个水平M和F)why?

第四章 简单的函数

4.1 tapply函数

setwd("d:/RBook")

Veg=read.table(file="Vegetation2.txt",header=TRUE)

names(Veg) #查看Veg中所有的变量名

4.1.1计算每个时间截面的均值

注意这里需要用到两个变量

m=mean(Veg$R)

m1=mean(Veg$R[Veg$Transect==1])

m2=mean(Veg$R[Veg$Transect==2])

r语言初学者指南 r语言初学者指南 R初学者指南

m3=mean(Veg$R[Veg$Transect==3])

m4=mean(Veg$R[Veg$Transect==4])

m5=mean(Veg$R[Veg$Transect==5])

m6=mean(Veg$R[Veg$Transect==6])

m7=mean(Veg$R[Veg$Transect==7])

m8=mean(Veg$R[Veg$Transect==8])

c(m,m1,m2,m3,m4,m5,m6,m7,m8)

#变量m表示所有8个时间截面的平均丰富度,m1到m8表示每个时间截面的平均丰富度

注:mean使用的对象是数据向量Veg$R,它不是一个矩阵!!所以不在方括号之间加入逗号。

4.1.2更高效地计算每个时间截面的均值

无论是tapply函数、lapply函数还是sapply函数,都是对其变量中的所有数据进行操作

使用tapply函数(用于分组统计)可以完成上面从m1到m8的操作

Veg$Transect [47] 7 7 7 7 7 7 8 8 8 8 8 8

Veg$R

5 8 6 6 6 6 6 7 10 8 18 12 11 7 10 8 9 6 12 13 10 8 8 13

[32] 16 9 14 11 13 11 12 9 10 14 14 10 14 9 12 11 12 14 9 5 12 9 10 16 12 10 14

tapply(Veg$R,Veg$Transect,mean)

1 2 3 4 5 6 7 8

7.571429 6.142857 10.375000 9.250000 12.375000 11.500000 10.500000 11.833333

#tapply函数根据第二个变量(Transect)的不同水平(截面的不同)对第一个变量(R)进行求均值运算

使用tapply函数还可以其求其他数值

>Me=tapply(Veg$R,Veg$Transect,mean)

>Sd=tapply(Veg$R,Veg$Transect,sd) #求标准差

>Le=tapply(Veg$R,Veg$Transect,length) #求长度

>cbind(Me,Sd,Le)

Me Sd Le

1 7.571429 1.3972763 7

2 6.142857 0.8997354 7

3 10.375000 3.5831949 8

4 9.250000 2.3145502 8

5 12.375000 2.1339099 8

6 11.500000 2.2677868 8

7 10.500000 3.1464265 6

8 11.833333 2.7141604 6

4.2sapply函数和lapply函数

>sapply(Veg[,5:9],FUN=mean) #为了节省空间只去第五到第九的变量,因选择的是列所以5:9在,后

R ROCK LITTER ML BARESOIL

9.965517 20.991379 22.853448 1.086207 17.594828 #求出这五个向量中数据的均值

注:tapply函数计算的是一个变量观察值子集的均值,而lapply和sapply函数计算的是一个变量或多个变量全部观察值的均值。FUN代表函数(function),必须大写

lapply和sapply的区别在于输出的不同:

>lapply(Veg[,5:9],FUN=mean)

$R

[1] 9.965517

$ROCK

[1] 20.99138

$LITTER

[1] 22.85345

$ML

[1] 1.086207

$BARESOIL

[1] 17.59483

#lapply函数输出的是一个列表,而sapply输出的是一个向量:

>sapply(Veg[,5:9],FUN=mean)

R ROCK LITTER ML BARESOIL

9.965517 20.991379 22.853448 1.086207 17.594828

4.3summary函数:统计变量信息的函数

>Z=cbind(Veg$R,Veg$ROCK,Veg$LITTER)

>colnames(Z)=c("R","ROCK","LITTER") #由于在cbind的过程中会丢失变量标签(下面的方法就不会)所以重新添加 summary(Z) # 三行代码也可用summary(Veg[,c("R","ROCK","LITTER")])或summary(Veg[,c(5,6,7)])

R ROCK LITTER

Min. : 5.000 Min. : 0.00 Min. : 5.00

1st Qu.: 8.000 1st Qu.: 7.25 1st Qu.:17.00

Median :10.000 Median :18.50 Median :23.00

Mean : 9.966 Mean :20.99 Mean :22.85

3rd Qu.:12.000 3rd Qu.:27.00 3rd Qu.:28.75

Max. :18.000 Max. :59.00 Max. :51.00

#summary会给出变量的最值、第一四三四分位数、中位数和平均值

4.4 table函数

>setwd("d:/RBook")

>Deer=read.table(file="Deer.txt",header=TRUE)

错误于scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : 657行没有9元素 #读取数据过程中遇到问题出错

解决方法:

>setwd("d:/RBook") #增加fill参数,

>Deer

Farm Month Year Sex clas1_4 LCT KFI Ecervi Tb

1 AL 10 0 1 4.0 191.000 20.45000 0.00000 0

2 AL 10 0 1 4.0 180.000 16.40000 0.00000 0

  

爱华网本文地址 » http://www.aihuau.com/a/405051/105764721590.html

更多阅读

C语言中scanf函数输入回车符的问题 c语言scanf连续输入

在用c语言编写输入语句的时候常用到scanf函数,初学者在刚用scanf函数输入时,经常会遇到各种各样的输入错误,最重要的是一定要记住scanf函数的输入格式,scanf函数里包含了哪些东西,输入的时候就必须有哪些东西,比如:scanf("%c%c%c"),那么输入

c语言学习方法(对于你很有好处的)

C语言学习方法        ——这是我从多篇文章中整理出来的!1.给初学者的建议:1.学好数学,重视数据结构(在能编写一段小的计算程序之后就可以看了,2.主要目的是提高代码的执行效率!)3.BASIC——pascal——C(数据结构)——汇编——编译

logo语言命令 LOGO语言 LOGO语言-语言简介,LOGO语言-基本命令

LOGO语言是一种早期的编程语言,也是一种与自然语言非常接近的编程语言,它通过“绘图”的方式来学习编程,对初学者特别是儿童进行寓教于乐的教学方式。 LOGO语言创始于1968年,是美国国家科学基金会所资助的一项专案研究,在麻省理工学院(MIT

声明:《r语言初学者指南 r语言初学者指南 R初学者指南》为网友年轻无极限分享!如侵犯到您的合法权益请联系我们删除