当前位置 博文首页 > 苍林翠竹的博客:R语言金融分析作业(二)
1、下载上交所‘60’打头股票名称与代码(按顺序排列),保存为文件stockid.csv
1)用循环语句和重复语句获取按代码序的前十只股票数据。
2)将这些股票的收盘价提取出来,然后计算各个股票收盘价的最大最小均值等等。(用到lapply,ldply程序包)
library(quantmod)
library(zoo)
library(xts)
library(TTR)
#1)用循环语句和重复语句获取按代码序的前十只股票数据
stocks<-read.csv("C:/Users/Desktop/stockid.csv",head=T,sep=",")
num<-c()
i<-1
while(length(num)<10){
j<-stocks[i,2]
tryCatch({
assign(paste("stock",j,sep=""),getSymbols(paste(j,".ss",sep="",collapse=""),src="yahoo",from='2016-01-01',to='2020-03-31',auto.assign=FALSE))
num<-append(num,j)
},error=function(e){cat("ERROR :",conditionMessage(e),"\n")})
i<-i+1
}
#2)将这些股票的收盘价提取出来,然后计算各个股票收盘价的最大最小均值等等。(用到lapply,ldply程序包)
closemax<-c()
closemin<-c()
closemean<-c()
for(i in num){
assign(paste("close",i,sep=""),get(paste("stock",i,sep=""))[,4])
closemax<-append(closemax,apply(get(paste("close",i,sep="")),2,max))
closemin<-append(closemin,apply(get(paste("close",i,sep="")),2,min))
closemean<-append(closemean,apply(get(paste("close",i,sep="")),2,mean))
}
2、将第一讲作业1得到的"微积分II",“英语”,"线性代数"成绩的数据集score
1)计算各科平均分
2)求各科最高最低分
3)求出每人总分
4)找出总分最高的同学
5)散点图探索各科成绩的关联关系 (标出主题、x轴、y轴、x、y轴的范围、x、y轴为整数类型、红点、实心)
6)对微积分II进行直方图分析
7)列联表分析微积分II
8)饼图并解释
9)箱尾图并解释
10)茎叶图并解释
11)QQ图并解释
12)散点图集(三种方法)
13)三维散点图
#生成学号和相应分布的三科分数
st_num<-seq(201707001,201707100)
score1<-c(runif(100,min=40,max=100))
score2<-c(rnorm(100,mean=85,sd=6))
score3<-c(rnorm(100,mean=85,sd=18))
score<-data.frame(st_num,score1,score2,score3)
for(i in 2:4){
score[,i][which(score[,i]>100)]=100
score[,i][which(score[,i]<0)]=0
}
names(score)<-c("学号","微积分II","英语","线性代数")
#1)计算各科平均分
apply(score[,2:4],2,mean)
#2)求各科最高最低分
apply(score[,2:4],2,max)
apply(score[,2:4],2,min)
#3)求出每人总分
score$总分<-apply(score[,2:4],1,sum)
head(score$总分,6)
#4)找出总分最高的同学
max(score$总分)
score$学号[which.max(score$总分)]
#5)散点图探索各科成绩的关联关系 (标出主题、x轴、y轴、x、y轴的范围、x、y轴为整数类型、红点、实心)
attach(score)
opar <- par(no.readonly=TRUE)
par(ann=FALSE)
layout(matrix(c(1,2,3),2,3,byrow = TRUE))
plot(微积分II,英语,pch=16,col="red")
title(main="微积分II & 英语",xlim=c(0,100),ylim=c(0,100),xlab="微积分II",ylab="英语")
plot(线性代数,微积分II,pch=16,col="red")
title(main="微积分II & 线性代数",xlim=c(0,100),ylim=c(0,100),ylab="微积分II",xlab="线性代数")
plot(英语,线性代数,pch=16,col="red")
title(main="英语 & 线性代数",xlim=c(0,100),ylim=c(0,100),xlab="英语",ylab="线性代数")
par(opar)
detach(score)
#6)对微积分II进行直方图分析
hist(score$微积分II,freq=F,xlab="分数",main="微积分II直方图")
lines(density(score$微积分II),col="green")
#7)列联表分析微积分II
rank<-data.frame(st_num)
rank$微积分II<-NA
rank$英语<-NA
rank$微积分II[score[,2]<60]<-"不及格"
rank$微积分II[score[,2]<80 & score[,2]>=60]<-"良好"
rank$微积分II[score[,2]>=80]<-"优秀"
rank$英语[score[,3]<60]<-"不及格"
rank$英语[score[,3]<80 & score[,3]>=60]<-"良好"
rank$英语[score[,3]>=80]<-"优秀"
table<-xtabs(~rank$微积分II+rank$英语,data=rank)
table
#8)饼图并解释
num<-c(sum(score[,2]<60),sum(score[,2]<80 & score[,2]>=60),sum(score[,2]>=80))
rankname<-c("不及格","良好","优秀")
pct <- round(num/sum(num)*100)
lbls <- paste(rankname