识别特定范围内的值数量
Identifying Number of Values in a Specific Range
我对 R 比较陌生,对确定落在特定范围内的值的数量有疑问。
我有一个数据 table,列名是细胞类型(20 种细胞类型),然后是 23000 个基因的行名及其每种细胞类型的甲基化值(0 到 1 之间)。我在下面提供了数据集的示例(我希望它很清楚!)
MCF-7 T47D Kuramochhi CAOV4 JHOS4
cg00964109 0.03425448 0.042629239 0.08461351 0.04095205 0.039999
cg00967316 0.44065041 0.800911854 0.35689046 0.63291139 0.812005277
cg00968475 0.64207018 0.910031909 0.06120248 0.84703547 0.084849946
我想做的是 运行 一个循环(或者如果可能的话更简单的方法!)来识别甲基化值落在以下范围内的基因的数量:0-0.0999、0.1- 0.1999、0.2-0.29999 等,每种细胞类型高达 0.9-1。我还想对整个数据进行类似的分析(即甲基化值落在上述范围内的基因数量)table。
这至少能让你入门:
x <- read.table(text="MCF-7 T47D Kuramochhi CAOV4 JHOS4
cg00964109 0.03425448 0.042629239 0.08461351 0.04095205 0.039999
cg00967316 0.44065041 0.800911854 0.35689046 0.63291139 0.812005277
cg00968475 0.64207018 0.910031909 0.06120248 0.84703547 0.084849946")
apply(x, 1, function(value) length(which(value <= 0.0999)))
apply(x, 1, function(value) length(which(value >= 0.1 & value <= 0.1999)))
apply(x, 1, function(value) length(which(value >= 0.2 & value <= 0.2999)))
等
这是一种方法:
R> apply(Data,2,function(x){
table(cut(x,seq(0,1,.1),right=F))
})
MCF-7 T47D Kuramochhi CAOV4 JHOS4
[0,0.1) 99 105 102 103 100
[0.1,0.2) 99 90 116 105 102
[0.2,0.3) 98 103 93 92 97
[0.3,0.4) 108 91 91 93 105
[0.4,0.5) 103 114 104 101 107
[0.5,0.6) 100 111 77 97 105
[0.6,0.7) 98 89 110 103 102
[0.7,0.8) 97 100 110 81 109
[0.8,0.9) 106 112 90 110 94
[0.9,1) 92 85 107 115 79
数据:
set.seed(123)
Data <- matrix(runif(5000),ncol=5,
dimnames=list(
paste0("gene_",1:1000),
c('MCF-7','T47D','Kuramochhi',
'CAOV4','JHOS4')))
我对 R 比较陌生,对确定落在特定范围内的值的数量有疑问。
我有一个数据 table,列名是细胞类型(20 种细胞类型),然后是 23000 个基因的行名及其每种细胞类型的甲基化值(0 到 1 之间)。我在下面提供了数据集的示例(我希望它很清楚!)
MCF-7 T47D Kuramochhi CAOV4 JHOS4
cg00964109 0.03425448 0.042629239 0.08461351 0.04095205 0.039999
cg00967316 0.44065041 0.800911854 0.35689046 0.63291139 0.812005277
cg00968475 0.64207018 0.910031909 0.06120248 0.84703547 0.084849946
我想做的是 运行 一个循环(或者如果可能的话更简单的方法!)来识别甲基化值落在以下范围内的基因的数量:0-0.0999、0.1- 0.1999、0.2-0.29999 等,每种细胞类型高达 0.9-1。我还想对整个数据进行类似的分析(即甲基化值落在上述范围内的基因数量)table。
这至少能让你入门:
x <- read.table(text="MCF-7 T47D Kuramochhi CAOV4 JHOS4
cg00964109 0.03425448 0.042629239 0.08461351 0.04095205 0.039999
cg00967316 0.44065041 0.800911854 0.35689046 0.63291139 0.812005277
cg00968475 0.64207018 0.910031909 0.06120248 0.84703547 0.084849946")
apply(x, 1, function(value) length(which(value <= 0.0999)))
apply(x, 1, function(value) length(which(value >= 0.1 & value <= 0.1999)))
apply(x, 1, function(value) length(which(value >= 0.2 & value <= 0.2999)))
等
这是一种方法:
R> apply(Data,2,function(x){
table(cut(x,seq(0,1,.1),right=F))
})
MCF-7 T47D Kuramochhi CAOV4 JHOS4
[0,0.1) 99 105 102 103 100
[0.1,0.2) 99 90 116 105 102
[0.2,0.3) 98 103 93 92 97
[0.3,0.4) 108 91 91 93 105
[0.4,0.5) 103 114 104 101 107
[0.5,0.6) 100 111 77 97 105
[0.6,0.7) 98 89 110 103 102
[0.7,0.8) 97 100 110 81 109
[0.8,0.9) 106 112 90 110 94
[0.9,1) 92 85 107 115 79
数据:
set.seed(123)
Data <- matrix(runif(5000),ncol=5,
dimnames=list(
paste0("gene_",1:1000),
c('MCF-7','T47D','Kuramochhi',
'CAOV4','JHOS4')))