做資料分析時,經常會遇到需要把連續性變數轉為分類變數。
一 讀入資料
讀入TCGA的表達量資料,擷取部分資料進行示範
#TCGA的表達量資料#setwd()data <- read。csv(“Expr_median。csv”,header=TRUE,row。names=1,check。names=FALSE)data <- as。data。frame(t(data))data[1:4,1:4]
row。names=1 :讀入資料的第一列作為行名
check。names=FALSE:標題保持原樣
可以自行試一下,分別去掉這兩個引數,然後比較下資料的差異
二 批次轉化
1 ifelse轉化單一列
#將TCGA-97-7938-01A根據medain轉為 高 低data1 <- datadata1[,“ENSG00000000003。13”] <- ifelse(data1[,“ENSG00000000003。13”] > median(data1[,“ENSG00000000003。13”]),“High”,“Low”)data1[1:4,1:4]
可以看到ENSG00000000003。13基因的表達量已經轉為高 低 二分類了。
分段閾值:還可以是均值,四分衛,10%,或者具體數值
#按照均值分data1[,“ENSG00000000460。15”] <- ifelse(data1[,“ENSG00000000460。15”] > mean(data1[,“ENSG00000000460。15”]),“High”,“Low”)#按照75%分data1[,“ENSG00000000419。11”] <- ifelse(data1[,“ENSG00000000419。11”] > quantile(data1[,“ENSG00000000419。11”],0。75),“High”,“Low”)#按照具體數值分data1[,“ENSG00000000457。12”] <- ifelse(data1[,“ENSG00000000457。12”] > 10,“High”,“Low”)data1[1:4,1:4]
2 批次轉化
當列數較少時,可以按照上述方式,一個個完後分類。當太多時,需要批次完成!
#使用apply,批次完成轉化data2 <- datadata2 <- apply(data2, 2, function(x) {ifelse(x >= median(x), “hign”, “low”)})head(data2)
批次已完成,省時省力!
3 for迴圈完成
data3 <- datafor (i in colnames(data3)){data3[,i] <- ifelse(data3[,i] >= median(data3[,i]),“high”,“low”)}
實現方式很多,根據個人習慣,自取!
既往專輯(點選進入)
實用統計教程
臨床預測模型
統計分析批次完成
Kappa檢驗與ROC分析
科研軟體與瀏覽器外掛
小白變統計高手訓練營
小白學R語言訓練營
統計諮詢