lab1-数据预处理

本节要点:

  • 缺失值处理
  • 归一化

数据导入

methylation <- read.table("CHOL_methylation.data",header=T,row.names=1)

缺失值处理

若缺失值的个数大于10,忽略该元组

QC <- function(a,i){
  numOfNA <- table(is.na(a[i,]))[1]
  if (numOfNA>=9){ 
    #看非空是否大于等于9是因为我用table(),如果有的元组没有空值返回就是NA
    #另外 空值大于10就说明非空小于等于9哈 一个等号的差别关乎一个元组呢
    return(a[i,])
  }else{
    return(NA)
  }
}
remethy <- matrix(nrow=1,ncol=19)
remethy <- as.data.frame(remethy)
remethy <- remethy[-1,]
#创造一个空数据框 我喜欢这样 因为可以rbind()

for (i in 1:1000){
  qc <- QC(methylation,i)
  if (!all(is.na(qc))){
    remethy <- rbind(remethy,qc)
  }
}

剩余元组中的缺失值用相应列的平均值代替

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])
}

输出处理后数据的行数和列数

dim(filledmethy)
dim(filledmethy)

归一化

最小-最大规范化方法

将每一个样本中的DNA甲基化数据规范化到[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个样本中前20个探针的数据

normedmethy[1:20,11:15]
normedmethy[1:20,11:15]

参考

补缺失值

R语言填补缺失值

归一化

R中,数据标准化方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容