【R语言】rep函数生成差异表达分组变量

2022-09-21 18:42:40 浏览数 (1)

前面给大家介绍了☞【R语言】rep函数的使用,今天我们来举几个数据分析中的应用,例如差异表达分析时,样本类型变量,我们就可以使用rep函数来生成。

我们在☞GEO芯片数据差异表达分析 中分析的GSE68840这套数据,一共有7个样本,分别是

"plx4032 sensitivity: Sensitive" "plx4032 sensitivity: Sensitive" "plx4032 sensitivity: Sensitive" "plx4032 sensitivity: Resistant" "plx4032 sensitivity: Resistant" "plx4032 sensitivity: Resistant" "plx4032 sensitivity: Resistant"

3个Sensitive,4个Resistant,所以我们使用的是,下面这条命令

代码语言:javascript复制
mRNA_sample_type=factor(c(rep("sensitive",3),rep("resistant",4)))

可以得到如下这个样本类型的因子,

有人肯定会好奇了,如果样本类型不是3个Sensitive,4个Resistant这种一类在一起的,该怎么处理呢?

我们再来看几个例子

假如我们的样本类型是下面这样的,交替排布的

normal tumor normal tumor normal tumor

代码语言:javascript复制
rep(c("normal","tumor"),3)

再比如多出一个normal

normal tumor normal tumor normal tumor normal

代码语言:javascript复制
c(rep(c("normal","tumor"),3),"normal")

有人又要说了,你这不还是很规律的吗?如果完全没有规律,该怎么处理。例如下面这样的。

normal tumor tumor normal tumor normal tumor

我们给大家介绍三种方法吧!

方法一、简单粗暴,但work,就是有点累,c()是yyds

一个一个敲出来,在样本数超过二三十就不建议使用这种方法了,费眼睛,费键盘。

代码语言:javascript复制
c("normal","tumor","tumor","normal","tumor","normal","tumor")

方法二、巧用因子,事半功倍

☞【R语言】R中的因子(factor)

☞【R语言】因子在临床分组中的应用

我们不用敲完整的样本类型名字,用数字来代替,然后再用factor转回来。

代码语言:javascript复制
#1=normal
#2=tumor
factor(c(1,2,2,1,2,1,2),levels=c(1,2),labels=c("normal","tumor"))

你会发现跟用c()得到的结果是一样的

方法三、登堂入室,活学活用

我们联合使用,strsplit函数 factor函数

在方法二中,我们相当于还是要用c()先创建一个数值向量,逗号还是要敲的。方法三,逗号都省了。我一直觉得“懒人”是第一生产力!

代码语言:javascript复制
gsms <- "1221212"
#字符串分割成向量
sml <- strsplit(gsms, split="")[[1]]
#转成因子
gs <- factor(sml)
#将数字替换成样本类型
levels(gs) <- c("normal","tumor")
gs

上面介绍的三种方法,在样本数比较少的时候还是比较好用的,但是一旦样本数上百,上千了,以上三种方法都不太适用,后面我们再把“意大利炮”拉出来!大家先把鸟枪使好。

参考资料:

☞【R语言】rep函数的使用

☞ GEO芯片数据差异表达分析

☞【R语言】R中的因子(factor)

☞【R语言】因子在临床分组中的应用

0 人点赞