本節(jié)要點(diǎn):
- 缺失值處理
- 歸一化
數(shù)據(jù)導(dǎo)入
methylation <- read.table("CHOL_methylation.data",header=T,row.names=1)
缺失值處理
若缺失值的個(gè)數(shù)大于10,忽略該元組
QC <- function(a,i){
numOfNA <- table(is.na(a[i,]))[1]
if (numOfNA>=9){
#看非空是否大于等于9是因?yàn)槲矣胻able(),如果有的元組沒有空值返回就是NA
#另外 空值大于10就說明非空小于等于9哈 一個(gè)等號(hào)的差別關(guān)乎一個(gè)元組呢
return(a[i,])
}else{
return(NA)
}
}
remethy <- matrix(nrow=1,ncol=19)
remethy <- as.data.frame(remethy)
remethy <- remethy[-1,]
#創(chuàng)造一個(gè)空數(shù)據(jù)框 我喜歡這樣 因?yàn)榭梢詒bind()
for (i in 1:1000){
qc <- QC(methylation,i)
if (!all(is.na(qc))){
remethy <- rbind(remethy,qc)
}
}
剩余元組中的缺失值用相應(yīng)列的平均值代替
FillNA <- function(x){
avg <- mean(na.omit(x))
x[is.na(x )]<- avg
x
}
filledmethy <- remethy
for (i in 1:19){
filledmethy[,i] <- FillNA(remethy[,i])
}
輸出處理后數(shù)據(jù)的行數(shù)和列數(shù)
dim(filledmethy)

dim(filledmethy)
歸一化
最小-最大規(guī)范化方法
將每一個(gè)樣本中的DNA甲基化數(shù)據(jù)規(guī)范化到[0,1]
normalization <- function(x){
x <- as.numeric(x)
M <- as.numeric(max(x))
m <- as.numeric(min(x))
n <- (x-m)/(M-m)
n
}
normedmethy <- filledmethy
for (i in 1:19){
normedmethy[,i] <- normalization(filledmethy[,i])
}
截圖給出11-15個(gè)樣本中前20個(gè)探針的數(shù)據(jù)
normedmethy[1:20,11:15]

normedmethy[1:20,11:15]