当前位置 博文首页 > 苍林翠竹的博客:R语言金融分析作业(二)

    苍林翠竹的博客:R语言金融分析作业(二)

    作者:[db:作者] 时间:2021-06-30 15:35

    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