R软件学习笔记-3(基本函数与运算)
来源:互联网 发布:如何制作云免流软件 编辑:程序博客网 时间:2024/05/17 09:15
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为还原的原始数据
- R软件学习笔记-3(基本函数与运算)
- R软件学习笔记-3(简单运算)
- R语言学习笔记(一)——数据结构与基本运算
- R语言与函数估计学习笔记(函数展开)
- R软件学习笔记-5(R软件画图)
- R 学习 运算函数篇
- R软件学习笔记-7(方差分析)
- R软件学习笔记-5(R语言绘图)
- 基本运算与函数
- MySQL学习笔记(十三)运算符与函数二
- R软件学习笔记-1
- R软件学习笔记-2
- Swift学习笔记(3)--基本运算符
- R统计笔记(二):投影运算与转换
- R语言与函数估计学习笔记(函数模型的参数估计)
- R语言与函数估计学习笔记(核方法与局部多项式)
- iOS学习笔记其2-基本运算与程序控制流程
- Java学习笔记-基本数据类型与运算符
- 【Xcode使用技巧】Xcode调试方法
- (534A)codeforce
- 反转链表
- 3.10 Template Method(模板方法) -- 类行为型模式
- date0407/ObjectEquals.java
- R软件学习笔记-3(基本函数与运算)
- 关于百度地图jar包冲突问题
- 阅读lua源码顺序
- date0407/DuotaiMember.java
- 海量数据中找第k大个数
- date0407/DuotaiInterface.java
- 3.11 Visitor(访问者) -- 对象行为型模式
- Winform控件之文本类控件
- 解决ssh连接一段时间后光标无响应问题