资料来源:http://www.bio-info-trainee.com/3793.html
R语言基础知识的一些检验,最好是对照几本R基础语法书籍来理解。
全部答案及视频在:https://github.com/jmzeng1314/R_bilibili
# 1.打开 Rstudio 告诉我它的工作目录
getwd()
# 2.新建6个向量,基于不同的原子类型,(重点是字符串,数值,逻辑值)
v1 = c(1, 2, 7, -4, 5) ### "numeric"
v2 = c("Rice", "Wheat") ### "character"
v3 = c(9:17) ### "integer"
v4 = c(1+0i, 2+4i) ### "complex"
v5 = c(TRUE, TRUE, FALSE, TRUE) ### "logical"
v6 = c( "Hello" )
#函数class(),查看数据类型
# 3.getwd()返回的是当前的工作目录
getwd()
# 4.新建5个其它数据结构,矩阵,数组,数据框,列表,因子(重点是数据框,矩阵)
m1 = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
a1 = array(1:24,dim = c(2,3,4))
df = data.frame(
gender = c("Male", "Male", "Male","Female","Male","Female"),
height = c(152, 171.5, 165, 158, 181.5, 175),
weight = c(81,93,78,45,32,65),
Age = c(42,38,26,45,32,65))
newlist = list(v1,v2,v3,v4,v5)
newfactor <- factor(letters[1:20], labels = "letter")
# 5.在你新建的数据框进行切片操作,比如首先取第1,3行, 然后取第2,4列
df[c(1,3),]
df[,c(2,4)]
# 6.使用data函数来加载R内置数据集 rivers 描述它。
data('rivers')
rivers
# 7.下载 https://www.ncbi.nlm.nih.gov/sra?term=SRP133642 里面的 RunInfo Table 文件读入到R里面,
#了解这个数据框,多少列,每一列都是什么属性的元素。
RunInfoTab <- read.csv('SraRunTable.txt',row.names = 1,sep = '\t')
dim(RunInfoTab)
nrow(RunInfoTab)
ncol(RunInfoTab)
str(RunInfoTab)
# 8.下载 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE111229 里面的样本信息
#读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。
#方法1:
options(stringsAsFactors = F)
GEO=read.csv('sample.csv')
nrow(GEO)
ncol(GEO)
class(GEO)
str(GEO)
#方法2:
# 函数getGEO的下载方法
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
BiocManager::install('GEOquery')
library(GEOquery) #加载GEOquery这个包
GEOdata<-getGEO('GSE111229',getGPL = F)
#使用getGEO函数下载数据,GPL文件注释一般比较大,不下载
save(GEOdata,file='GEOdata.Rdata')
load("GEOdata.Rdata") #导入数据
pdata<- pData(GEOdata[[1]])
#pData()函数可以调用实验设计的相关内容
class(pdata)
dim(pdata)
colnames(pdata) #geo_accession就是样品名
# 9.把两个表关联起来,使用merge函数。
?merge()
###by.x = 'Sample_Name',by.y = 'Accession'这里的Sample_Name与Accession必须代表同样的数据!
identical(RunInfoTab$Sample_Name , GEO$Accession) #此处2列的行数不一致,但内容一致
d=merge(RunInfoTab,GEO,by.x = 'Sample_Name',by.y = 'Accession')
e=d[,c("MBases","Title")]
save(e,file = 'input.Rdata')
# 10.对前面读取的 RunInfo Table 文件在R里面探索其MBases列,
#包括 箱线图(boxplot)和五分位数(fivenum),还有频数图(hist),以及密度图(density) 。
rm(list = ls())
options(stringsAsFactors = F)
load(file = 'input.Rdata')
View(e)
boxplot(e$MBases)
fivenum(e$MBases)
hist(e$MBases)
plot(density(e$MBases))
# 11.把前面读取的样本信息表格的样本名字根据下划线分割看第3列元素的统计情况。
#第三列代表该样本所在的plate
e[,2]
plate=unlist(lapply(e[,2],function(x){
# x=e[1,2]
x
strsplit(x,'_')[[1]][3] #中括号的理解
}))
table(plate)
###plate
#0048 0049
#384 384
# 12.根据plate把关联到的 RunInfo Table 信息的MBases列分组检验是否有统计学显著的差异。
e$plate=plate
t.test(e[,1]~plate)
#data: e[, 1] by plate
#t = 2.3019, df = 728.18, p-value = 0.02162
# 13.分组绘制箱线图(boxplot),频数图(hist),以及密度图(density) 。
boxplot(e[,1]~plate)
# 14.使用ggplot2把上面的图进行重新绘制。
library(ggplot2)
colnames(e)
ggplot(e,aes(x=plate,y=MBases)) +
geom_boxplot() #boxplot
e$plate=factor(e$plate) #将plate转换为因子类型
ggplot(e,aes(x=MBases))+
geom_histogram(fill='pink',colour='blue')+
facet_grid(. ~plate) #hist
ggplot(e,aes(x=plate,y=MBases))+
geom_point() +
stat_density2d(aes(alpha=..density..),geom="raster",contour=F) #density
# 15.使用ggpubr把上面的图进行重新绘制。
library(ggpubr)
p <- ggboxplot(e, x = "plate", y = "MBases",
color = "plate", palette = "jco",
add = "jitter")
p+stat_compare_means(method = 't.test')
# 16.随机取384个MBases信息,跟前面的两个plate的信息组合成新的数据框,第一列是分组,第二列是MBases,总共是384*3行数据。
newdat<- sample (e$MBases, 384, replace = FALSE)
data1 <- e[newdat, ]
data2 <- data1[,c(3,1,2)]
dim(data2)
感谢Jimmy老师,以及生信技能树团队的资源!!!










网友评论