每天資訊R語言|連續性變數轉為分類變數,界值可為均數、中位數、上下四分位數,非常方便

菜單

R語言|連續性變數轉為分類變數,界值可為均數、中位數、上下四分位數,非常方便

做資料分析時,經常會遇到需要把連續性變數轉為分類變數。

一 讀入資料

讀入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]

R語言|連續性變數轉為分類變數,界值可為均數、中位數、上下四分位數,非常方便

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]

R語言|連續性變數轉為分類變數,界值可為均數、中位數、上下四分位數,非常方便

可以看到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]

R語言|連續性變數轉為分類變數,界值可為均數、中位數、上下四分位數,非常方便

2 批次轉化

當列數較少時,可以按照上述方式,一個個完後分類。當太多時,需要批次完成!

#使用apply,批次完成轉化data2 <- datadata2 <- apply(data2, 2, function(x) {ifelse(x >= median(x), “hign”, “low”)})head(data2)

R語言|連續性變數轉為分類變數,界值可為均數、中位數、上下四分位數,非常方便

批次已完成,省時省力!

3 for迴圈完成

data3 <- datafor (i in colnames(data3)){data3[,i] <- ifelse(data3[,i] >= median(data3[,i]),“high”,“low”)}

R語言|連續性變數轉為分類變數,界值可為均數、中位數、上下四分位數,非常方便

實現方式很多,根據個人習慣,自取!

既往專輯(點選進入)

實用統計教程

臨床預測模型

統計分析批次完成

Kappa檢驗與ROC分析

科研軟體與瀏覽器外掛

小白變統計高手訓練營

小白學R語言訓練營

統計諮詢