R语言处理技巧

数据整理

筛选:按照一定列名顺序筛选:filter函数

filter(data,colname=="")

按照rowname筛选:subset函数

subset(data,grepl("^.*XXX.*$,data))

去除空(NA)值:na.omit(data)

delete needless x colname:data[c(-x)]

delete annotation repetition:#将gene annotation变为行名时用到

match(unique(data$X),data$X)

match函数查找数据集中每个唯一X的第一行的位置,然后根据位置提取这些行和所需的列。

distinct(data,data$X,.keep_all=T)

distinct函数必须搜索并排除重复项。.keep_all函数用于保留输出数据框中的所有其他变量,但是会出现一列新数据

将gene annotation变为行名

rownames(data)<-data[,1]#将第一行作为data的行名

data<-data[,-1]#去除第一行

分组差异分析

#构建分组

group_list=ifelse(as.numeric(substr(colnames(data),14,15))<10,'tumor','normal')

design<-model.matrix(~0+factor(group_list))

colnames(design)=levels(factor(group_list))

rownames(design)=colnames(data)

design

#limma标准化,但用到edgeR的calcNormFactors故也得library(edgeR)

dge<-DGEList(counts=data)

dge<-calcNormFactors(dge)

logCPM<-cpm(dge,log=TRUE,prior.count=3)#prior.count=3为了防止取log2过小

#limma差异分析

v<-voom(dge,design,plot = T,normalize="quantile")

fit<-lmFit(v,design)

cont.matrix=makeContrasts(contrasts = c('tumor-normal'),levels = design)

fit2=contrasts.fit(fit,cont.matrix)

fit2=eBayes(fit2)

tempOutput=topTable(fit2,coef = 'tumor-normal',n=Inf)

DEG_limma_voom=na.omit(tempOutput)

head(DEG_limma_voom)

write.csv(DEG_limma_voom,"limma差异分析结果.csv",quote = F,row.names = T)

save(DEG_limma_voom,file = "limma差异分析结果.Rda")

原作者:想养猫的龙哥 https://www.bilibili.com/read/cv9942855/ 出处:bilibili

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值