#练习一
# 1.1 产生一个等差数列(1,3,5,7,……,99)赋值给向量x,尝试不同的方式。
#1.1.1
x <- seq(from=1,to=99,by=2)
#1.1.2
x<-1:100
index = rep(c(TRUE, FALSE), 100)
x<-x[index]
x<-x[!is.na(x)]
#1.1.3
x<-NULL
num<-1
for(i in 1:50){
x[i]<-num
num<-num+2
}
# 1.2 产生一个内容重复的数列(1,2,3,4,5……,1,2,3,4,5),重复次数为10,并将其赋值给向量y。
y<-rep(1:5,10)
# 1.3 向量z由x和y组成。请判断x、y、z的属性是否为向量。
z <- c(x,y)
is.vector(x)
is.vector(y)
is.vector(z)
# 1.4 请删除x中第个1数值。
x <- x[-1]
# 1.5 请删除y中所有的取值1,有几种方法?
#1.5.1
y <- y[-which(y==1)]
#1.5.2
y<-y[!(y==1)]
# 1.6 请选择出x中第2个数值,以及>90的数值,结果存放在同一个向量中。
vector<-c(x[2],x[which(x>90)])
#可以使用c()函数创建多个值的向量
# 1.7 请选择出x中分别处于偶数位置和奇数位置的数值。
x_odd<- x[seq(from=1,to=length(x),by=2)]
x_even<-x[seq(from=2,to=length(x),by=2)]
#练习二
# 2.1 将自己的姓名、学号,性别,生日,以字符形式存放在向量m中。
m<-c("Tony","2020110","Male","1998.8.1")
# 2.2 为我们班30名学员产生一个编号,编号是NJU16-1, NJU16-2,……, NJU16-30,赋值给向量n。
n<-paste("NJU16",1:30,sep="-")
#seq: 连接的字符串
#paste (…, sep = " ", collapse = NULL)
#paste0()
# 2.3 仅保留30名学员编号中含”8”的编号。
n[grep("8",n)]
#grep函数和正则表达式一起进行筛选查询
#具体见“正则表达式.txt”
# 2.4 根据讲授的内容,你有几种方法实现以下的内容:
# 2.5 请将”I Like You”的动词取出。
statement<-"I Like You"
verb<-substr(statement,3,6)
# 2.6 请将”I Like You”替换为”I Love You”。
substr(statement,3,6) <- "Love"
statement
# 2.7 请将个人信息”Jack,Male,35,worker”分别取出。
strsplit("Jack,Male,35,worker",split=",")
#strsplit:拆分字符向量的元素
# 2.8 请将”+86-021-88681188Ext1”中的主机号取出。
substr("+86-021-88681188Ext1",5,16)
#练习三
# 3.1 计算mtcars数据中mpg、cyl、hp、drat的最小值、最大值、均数、标准差、中位数、25%分位数、75%分位数。
mpg<- data.frame(min(mtcars$mpg),max(mtcars$mpg),mean(mtcars$mpg),sd(mtcars$mpg),median(mtcars$mpg),quantile(mtcars$mpg,0.25),quantile(mtcars$mpg,0.75))
# 3.2 能否找到hp最大、最小的个体,请给出其个体编号。
hp_max <- which.max(mtcars$hp)
hp_max <- which(mtcars$hp==max(mtcars$hp))
hp_min<- which.min(mtcars$hp)
hp_min<- which(mtcars$hp==min(mtcars$hp))
# 3.3 请判断cyl中的取值有哪几个?能否给出每个取值的人数。
unique(mtcars$cyl)
table(mtcars$cyl)
# 3.4 请将hp大于均数的样本取出来。
sample <- mtcars[which(mtcars$hp>mean(mtcars$hp)),]
#练习四
#将下列使用excel创建下列数据,并分别保存为.csv格式,将
#导入R(提示:read.csv),转存为.Rdata
setwd("")
data <- read.csv("data.csv",header = TRUE)
save(read.data,file="read.Rdata")
练习三
# 1.
mean_res <- aggregate(mtcars,list(mtcars$cyl),mean)
boxplot(mpg ~ cyl, data=mtcars,
main="Car Mileage Data",
xlab="Number of Cylinders",
ylab="Miles Per Gallon",
col = c('red','blue','green'))
points(2,c(mean_res$mpg[2]+5),col='red',
pch = 8)
lines(1:3,mean_res$mpg,col = grey(0.5),lwd=2,lty = 6)
points(1:3,mean_res$mpg,col = grey(0.5),lwd=2,pch = 14)
# 2.
x <- c(1:10)
y <- x
z <- 10/x
opar <- par(no.readonly=TRUE)
#保存初始设置;因为par()函数对于图形参数的改变是永久性的,但我们有时候只需要调用一次par()对图形的改变
par(pin=c(4,3))
#pin:设置当前图的长宽
plot(x, y, type="b",
pch=21, col="red",
yaxt="n", lty=3, ann=FALSE)
lines(x, z, type="b", pch=22, col="blue", lty=2)
axis(2, at=x, labels=x, col.axis="red", las=2)
axis(4, at=z, labels=round(z, digits=2),
col.axis="blue", cex.axis=0.7, tck=-.01)
mtext("y=10/x", side=4, line=3, cex.lab=1, las=3, col="blue")
#mtext:在边缘添加文本,m表示marginal
#side 1=下,2=左,3=上,4=右
#line:离图形边缘的距离
#cex.lab:坐标轴标签;cex.main:图形标题;cex.sub:副标题;cex.axis:坐标轴刻度标签
#las:水平或垂直【标签/坐标轴刻度标签】
title("An Example of Creative Axes",
xlab="X values",
ylab="Y=X")
par(opar)
##还原原始全局变量定义
# 3.
opar <- par(no.readonly=TRUE)
par(mfrow=c(2, 2),cex.lab = 1.5,mar = c(6,6,2,2))
#mfrow/mfcol:画布切割;mfrow=c(nrow,ncol)表示将画布切分成n行m列
#mar/mai:设置图形边界空白宽度,控制绘图面积的大小,分别对应图形下、左、上、右的边界宽度;前者取值单位是线条宽度,后者取值单位是英寸
plot(mtcars$wt,mtcars$mpg,xlab = 'wt',ylab = 'mpg')
plot(factor(mtcars$cyl),mtcars$mpg,xlab = 'cyl',ylab = 'mpg')
## boxplot(mpg~cyl,data=mtcars)
plot(factor(mtcars$cyl),factor(mtcars$gear),
xlab = 'gear',ylab = 'cyl')
##
# count_ <- table(mtcars$gear,mtcars$cyl)
# barplot(count_,axes=F,xlab = 'gear',ylab = 'cyl')
count_ <- table( mtcars$cyl)
pie(count_, labels = paste0("cyl_",names(count_)),radius = 1.2)
par(opar)
# 4.
pdf("mygraph.pdf",width = 7,height = 5)
opar <- par(no.readonly=TRUE)
par(fig=c(0, 0.8, 0, 0.8))
#fig:当前图形的坐标位置,假设原先画布的宽度为w,0表示新图形的左边框和原图形的左边框之间的距离是w的0%;0.8表示新图形的右边框和原图形的左边框之间的距离是w的80%;后面两个是高度,0表示下边框和下边框,0.8表示上边框和下边框
plot(mtcars$wt, mtcars$mpg,
xlab="Miles Per Gallon",
ylab="Car Weight")
par(fig=c(0, 0.8, 0.45, 1), new=TRUE)
#new=T:表示在当前图形上添加一副新的图的图形的坐标位置
boxplot(mtcars$wt, horizontal=TRUE, axes=FALSE)
#horizontal:表示逻辑参数,是否横向放置箱线图
#axes:表示不显示坐标轴
par(fig=c(0.65, 1, 0, 0.8), new=TRUE)
boxplot(mtcars$mpg, axes=FALSE)
par(opar)
dev.off()
#dev.off()函数:表示关闭指定设备【eg.绘图框]
练习四
library(dplyr)
library(tidyr)
library(ggplot2) #高级绘图
# 1.箱线图
mtcars$cyl<-factor(mtcars$cyl)
ggplot(mtcars, aes(x=cyl, y=mpg)) +
geom_boxplot( color="black", notch=TRUE,fill = c('red','blue','green'))+ #箱线图
labs(x ="Number of Cylinders" ,y="Miles Per Gallon")+ #labels
geom_point(position="jitter", color="blue", alpha=.5) #点图
# 2.随数值变化散点图 size=disp
ggplot(mtcars, aes(x=wt, y=mpg, size=disp)) +
geom_point(shape=21, color="black", fill="cornsilk") +
labs(x="Weight", y="Miles Per Gallon", size="Engine\nDisplacement")
# 3.
library(gridExtra) #线格包
p1 <- ggplot(data =mtcars ) + geom_point(aes(x=wt,y=mpg)) #散点图
p2 <- ggplot(data =mtcars ) + geom_bar(aes(x= am,fill = cyl),position = 'fill')
grid.arrange(p1,p2, ncol=2) #两图整合
# 4.生存曲线
seq<-read.table("C:\\Users\\Administrator\\Desktop\\R语言实验课4\\tcga-01-seq.txt",header=T)
clinical_data<-read.table("C:\\Users\\Administrator\\Desktop\\R语言实验课4\\tcga-clinical data.txt",header=T)
clinical_data$patient.bcr_patient_barcode<-toupper(clinical_data$patient.bcr_patient_barcode)
data<- merge(clinical_data,seq,by="patient.bcr_patient_barcode")
library(survival)
fit <- survfit(Surv(survival_time, patient.vital_status) ~ SAV1_exp, data = data2)
plot(fit, col=c("green","red"),ylab="Estimated survival function",xlab="Survival Time (days)")
text(2150,0.75,"log-rank P<0.0001")
legend(500, .95, c("SAV1_high", "SAV1_low"),lty = 1:1, col=c("red","green"))
library("survminer")
b=ggsurvplot(fit,surv.median.line = "hv" , conf.int = TRUE, cumcensor = TRUE,pval = TRUE, xlab="OS (months)",ylab="Survival probability",palette=c("#E7B800", "#2E9FDF"),legend.labs =c("SAV1_low","SAV1_high") )
练习五
library(dplyr)
library(tidyr)
library(ggplot2)
# 练习1 调查某美发店上半年各月顾客数量,如表所示. 问该店每月的顾客数量是否服从均匀分布?
ex1 <- c(27, 18, 15, 24, 36, 30)
ks.test(ex1,y = 'runif')
# p-value = 3.8e-06
# 练习2 从某地区高中二年级学生中随机抽取45位学生测得他们的体重,
# 问该地区学生的体重是否服从正态分布?
ex2 <- c(36,36,37,38,40,42,43,43,44,45,48,48,50,50,51,
52,53,54,54,56,57,57,57,58,58,58,58,58,59,60,
61,61,61,62,62,63,63,65,66,68,68,70,73,73,75)
shapiro.test(ex2)
# p-value = 0.2868
# 练习3 美国某年总统选举前,由社会调查总部抽查黑白种族与支持不同政党是否有关,
# 问不同种族与支持持政党之间是否存在独立性?
ex3 <- data.frame(nrow = c(1,1,1,2,2,2),
ncol = c(1,2,3,1,2,3),
freq = c(341,405,105,103,11,15))
tab = xtabs(freq~nrow+ncol,data = ex3)
tab
x <- matrix(c(341,103,405,11,105,15),2,3)
x
chisq.test(tab)
chisq.test(x)
# p-value < 2.2e-16
# p-value < 2.2e-16
# 练习4 以淀粉为原料生产葡萄的过程中, 残留许多糖蜜, 可作为生产酱色的原料.
# 在生产酱色的过程之前应尽可能彻彻底底除杂, 以保证酱色质量.为此对除杂方法进行选择.
# 在实验中选用5种不同的除杂方法, 每种方法做4次试验, 即重复4次
X<-c(25.6, 22.2, 28.0, 29.8, 24.4, 30.0, 29.0, 27.5, 25.0, 27.7,
23.0, 32.2, 28.8, 28.0, 31.5, 25.9, 20.6, 21.2, 22.0, 21.2)
A<-factor(rep(1:5, each=4))
ex4<-data.frame(X, A)
aov.mis<-aov(X~A, data=ex4)
summary(aov.mis)
plot(ex4$X~ex4$A)
plot(TukeyHSD(aov.mis))
pairwise.t.test(X, A, p.adjust.method="none")
pairwise.t.test(X, A, p.adjust.method="bonferroni")
# 练习5 为研究A、B、C三种饲料对猪的催肥效果, 用每种饲料喂养8头猪一段时间,
# 测得每头猪的初始重量(X)和增重(Y), 数据见表,试分析三种饲料对猪的催肥效果是否相同?
group <-rep(c("A","B","C"),each=8)
X <- c(15,13,11,12,12,16,14,17,17,16,
18,18,21,22,19,18,22,24,20,23,
25,27,30,32)
Y <-c(85,83,65,76,80,91,84,90,97,90,
100,95,103,106,99,94,89,91,83,
95,100,102,105,110)
ex5<-data.frame(group,X,Y)
outcome5 <- aov(Y ~ X + group , data=ex5)
summary(outcome5)
# Df Sum Sq Mean Sq F value Pr(>F)
# X 1 1621.1 1621.1 142.44 1.50e-10 ***
# group 2 707.2 353.6 31.07 7.32e-07 ***
# Residuals 20 227.6 11.4
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1