大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
这是GEO数据分析过程中的一个问题。后期我会把这些汇总成为一个目录的。
getGEO下载了表达矩阵文件后可获得他的ExpressionSet对象,用pdata函数提取临床信息表格,命名为pd。此处需要耗时端详这个pd表格,找到里面的分组信息列,生成一个grouplist,后续分析会多次用到。
有的直接拿出其中一列即可,有时候则不太好找,这时就考验R语言技巧了。有的pd表格有几十列,先减小一下筛选范围,我写了一个函数,用来汇总表格,不要关心function里面的内容,就是直接用。
dumd <>function(df){
library(dplyr)
colname <>'character')
count <>'integer')
for(i in 1:ncol(df)){
colname[i] = colnames(df)[[i]]
count[i]=nrow(df[!duplicated(df[,i]),])
}
output <>
print(output)
}
x=dumd(pd)
dumd函数其实就是统计了一下每列有多少非重复值。只有一个的,说明所有行都一样,直接去掉即可。重点就是,所有行对应值都一样的列,是不会有分组信息在里面的,所以直接删掉这部分。如果有>1的个位数的,很有可能就是分组信息咯。
pd=pd[,x$count>1]
还没那么容易,如果没有直接可用的列,grouplist大概可以有这三种生成方式:
(注意,需要用自己的数据来替换,不是直接运行)
#第一类,简单的。
pd$title #tab试一下
nchar(pd$characteristics_ch1[1])
group_list=substring(pd$characteristics_ch1,5,5)
which(colnames(pd)=='characteristics_ch1')
#第二类,复杂的
group_list=ifelse(str_detect(pd$title,'TT2')==TRUE,'TT2','TT3')
group_list=ifelse(str_detect(pd$title,'Control')==TRUE,'contorl','treat')
pd$characteristics_ch1.1
group_list=ifelse(pd$characteristics_ch1.1=='triple-negative status: not TN','notTN','TN')
#第三类,更复杂的,如果分组有三组以上 参考这个代码(来自生信技能树)
g=ifelse(deg$P.Value>0.01,'stable',
ifelse( deg$logFC >logFC_t,'up',
ifelse( deg$logFC <>'down','stable') )
)
ifelse是一个由if循环进化来的函数,原本语法是:
if(boolean_expression) {
// statement(s) will execute if the boolean expression is true.
} else {
// statement(s) will execute if the boolean expression is false.
}
简写成了ifelse(test, yes, no),分情况将数据分组。
简书:小洁忘了怎么分身
隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!)
国内看B站,教学视频链接:https://m.bilibili.com/space/338686099
国外看YouTube,教学视频链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists
联系客服