R软件学习笔记-3(基本函数与运算)
2015-05-10 18:40
429 查看
unique函数
从集合中删除重复的元素
unique(ReportCard$sex) #获得sex的类别值,检查性别取值范围是否正确
ReportCard$sex<-factor(ReportCard$sex,levels=c(1,2),labels=c("M","F")) #分类变量值的重新编码,将性别为1的替换为M,为2的替换为F
subset函数
条件筛选
#提取男生(性别为M)的数据,条件筛选
MaleScore1<-subset(ReportCard,ReportCard$sex=="M") #条件筛选函数subset
fix(MaleScore1)
等价于
Sel1<-ReportCard$sex=="M"
MaleScore1<-ReportCard[Sel1,] #利用位置向量实现数据筛选
提取男生(性别为M)且平均成绩不及格(小于60分)的学生数据
MaleScore2<-subset(ReportCard,ReportCard$sex=="M" & ReportCard$avScore=="E")
等价于:
Sel2<-(ReportCard$sex=="M" & ReportCard$avScore<60)
MaleScore2<-ReportCard[Sel2,]
随机筛选
set.seed(10000) #设置随机种子,初始值为10000
bh<-sample(1:60,size=30,replace=FALSE) #bh是位置向量,通过随机抽样产生,无放回方式
bh
MySample<-ReportCard[bh,] #间接利用位置向量实现成绩的随机抽样
保存数据集
write.table(ReportCard,file="ReportCard.txt",sep=" ",quote=FALSE,append=FALSE,na="NA",row.names=FALSE,col.names=TRUE)
if 结构
Price<-scan() #scan生成向量或列表
if(Price<200) print("No discount!")
if(Price>=200 & Price<500) print("off 3%")
if(Price>500 & Price<1000) print("off 5%")
if(Price>=1000 & Price<2500) print("off 8%")
if(Price>=2500 & Price<5000) print("off 10%")
if(Price>=5000) print("off 15%")
switch实现
Price<-scan()
if(Price<200) F<-1 else { #利用if给F赋值
if(Price>=200 & Price<500) F<-2 else {
if(Price>500 & Price<1000) F<-3 else {
if(Price>=1000 & Price<2500) F<-4 else{
if(Price>=2500 & Price<5000) F<-5 else
F<-6
}
}
}
}
print(switch(F,"No discount","off 3%","off 5%","off 8%","off 10%","off 15%")) #利用switch对F的值进行判断
for循环
s=0
for(i in 1:100){
s=s+i
}
print(s)
while循环
s<-0 #和,初始值为0
i<-1 #循环控制变量i,初始值为1
while(i<=100){ #当循环控制变量i<=100时进入循环体
s<-s+i
i<-i+1 #改变循环控制变量的值使其可能大于100
}
print(s) #当循环控制变量的值为101时跳出循环并输出计算结果
repeat循环
s<-0
i<-1
repeat{ #无条件进入循环体
if(i<=100){
s<-s+i
i<-i+1} else #改变循环控制变量的值使其可能大于100
break #当i大于100时强行跳出循环并输出计算结果
}
print(s)
举个栗子
MyTable<-function(mytable){ #自定义函数MyTable
rows<-dim(mytable)[1]
cols<-dim(mytable)[2]
DataTable<-NULL
for(i in 1:rows){
for(j in 1:mytable$freq[i]){
RowData<-mytable[i,c(1:(cols-1))]
DataTable<-rbind(DataTable,RowData)
}
}
row.names(DataTable)<-c(1:dim(DataTable)[1])
return(DataTable)
}
Grade<-rep(c("B","C","D","E"),times=2) #组织分数等级数据,分数等级重复2次
Sex<-rep(c("M","F"),each=4) #组织性别数据,取值各重复4次
Freq<-c(2,11,12,5,2,13,10,3) #组织汇总数据
Table<-data.frame(sex=Sex,grade=Grade,freq=Freq) #Table是数据框,域freq存放频数
MyData<-MyTable(Table) #调用自定义函数,Table是一个数据框
Table
MyData #MyData为还原的原始数据
从集合中删除重复的元素
unique(ReportCard$sex) #获得sex的类别值,检查性别取值范围是否正确
ReportCard$sex<-factor(ReportCard$sex,levels=c(1,2),labels=c("M","F")) #分类变量值的重新编码,将性别为1的替换为M,为2的替换为F
subset函数
条件筛选
#提取男生(性别为M)的数据,条件筛选
MaleScore1<-subset(ReportCard,ReportCard$sex=="M") #条件筛选函数subset
fix(MaleScore1)
等价于
Sel1<-ReportCard$sex=="M"
MaleScore1<-ReportCard[Sel1,] #利用位置向量实现数据筛选
提取男生(性别为M)且平均成绩不及格(小于60分)的学生数据
MaleScore2<-subset(ReportCard,ReportCard$sex=="M" & ReportCard$avScore=="E")
等价于:
Sel2<-(ReportCard$sex=="M" & ReportCard$avScore<60)
MaleScore2<-ReportCard[Sel2,]
随机筛选
set.seed(10000) #设置随机种子,初始值为10000
bh<-sample(1:60,size=30,replace=FALSE) #bh是位置向量,通过随机抽样产生,无放回方式
bh
MySample<-ReportCard[bh,] #间接利用位置向量实现成绩的随机抽样
保存数据集
write.table(ReportCard,file="ReportCard.txt",sep=" ",quote=FALSE,append=FALSE,na="NA",row.names=FALSE,col.names=TRUE)
if 结构
Price<-scan() #scan生成向量或列表
if(Price<200) print("No discount!")
if(Price>=200 & Price<500) print("off 3%")
if(Price>500 & Price<1000) print("off 5%")
if(Price>=1000 & Price<2500) print("off 8%")
if(Price>=2500 & Price<5000) print("off 10%")
if(Price>=5000) print("off 15%")
switch实现
Price<-scan()
if(Price<200) F<-1 else { #利用if给F赋值
if(Price>=200 & Price<500) F<-2 else {
if(Price>500 & Price<1000) F<-3 else {
if(Price>=1000 & Price<2500) F<-4 else{
if(Price>=2500 & Price<5000) F<-5 else
F<-6
}
}
}
}
print(switch(F,"No discount","off 3%","off 5%","off 8%","off 10%","off 15%")) #利用switch对F的值进行判断
for循环
s=0
for(i in 1:100){
s=s+i
}
print(s)
while循环
s<-0 #和,初始值为0
i<-1 #循环控制变量i,初始值为1
while(i<=100){ #当循环控制变量i<=100时进入循环体
s<-s+i
i<-i+1 #改变循环控制变量的值使其可能大于100
}
print(s) #当循环控制变量的值为101时跳出循环并输出计算结果
repeat循环
s<-0
i<-1
repeat{ #无条件进入循环体
if(i<=100){
s<-s+i
i<-i+1} else #改变循环控制变量的值使其可能大于100
break #当i大于100时强行跳出循环并输出计算结果
}
print(s)
举个栗子
MyTable<-function(mytable){ #自定义函数MyTable
rows<-dim(mytable)[1]
cols<-dim(mytable)[2]
DataTable<-NULL
for(i in 1:rows){
for(j in 1:mytable$freq[i]){
RowData<-mytable[i,c(1:(cols-1))]
DataTable<-rbind(DataTable,RowData)
}
}
row.names(DataTable)<-c(1:dim(DataTable)[1])
return(DataTable)
}
Grade<-rep(c("B","C","D","E"),times=2) #组织分数等级数据,分数等级重复2次
Sex<-rep(c("M","F"),each=4) #组织性别数据,取值各重复4次
Freq<-c(2,11,12,5,2,13,10,3) #组织汇总数据
Table<-data.frame(sex=Sex,grade=Grade,freq=Freq) #Table是数据框,域freq存放频数
MyData<-MyTable(Table) #调用自定义函数,Table是一个数据框
Table
MyData #MyData为还原的原始数据
相关文章推荐
- Python 2.7 学习笔记 基本语法和函数定义
- Verilog学习笔记基本语法篇(九)········ 任务和函数
- C语言学习笔记(三) 输入输出函数的基本用法以及运算符
- Python学习笔记之基础(一)基本运算
- Fortran学习笔记1——基础知识(数据基本类型及其运算)
- oracle 最简单的学习笔记,增删改查,PLSQL基本语法,游标,函数,存储过程的实现
- MFC学习笔记之:MFC最基本动作(如创建窗口,点击取消等)函数的执行顺序
- TensorFlow学习笔记之——些常用基本概念与函数(详细)
- C++ 学习笔记(14)重载运算与类型转换、函数对象、function库
- 【OpenCV学习笔记】十一、基本图像运算
- go基本语法学习笔记之函数
- SQL基本函数学习笔记(转载)
- Extjs学习笔记--(四,基本函数介绍)
- Sass学习笔记 -- 初步了解函数、运算、条件判断及循环
- Delphi-IOCP学习笔记<二>====IOCP基本函数介绍和理解
- SQL查询的艺术学习笔记--连接符数值运算函数
- python学习笔记(三):常用函数和运算优先级
- Opencv学习笔记三-直方图点运算(直方图基本点算子、直方图正规化、直方图均衡化)
- python学习笔记(一) 基本数据类型及运算
- [学习笔记]信号基本概念(中断和信号)/名称及常用信号/信号处理/signal函数实践