2017-08-12 66 views
0

我已經在這個社區潛伏了一段時間,但是這是我的第一個問題...從連續變量創建分類變量W /縮放數據

背景: 我與乳腺癌的數據工作來自UCI。 DATA

我想要做的是一個潛類分析(技術上潛在的配置文件,因爲它們是連續變量),但我必須首先爲每個變量調整我的值。一旦我縮放,我現在有32個變量,每個變量都是縮放的,範圍從負到正(poLCA函數不能使用負數或零,我相信)。請參閱下面的縮放功能示例。

> summary(scaled.dat.1) 
    V1   

最小。 :-2.0279
1 Qu.:-0.6888
中位數:-0.2149
平均:0.0000
第三曲:0.4690
最大。 :3.9678

問題 如何將這些縮放連續值更改爲說1:5的分類值?

+1

看一看'?切'。 –

回答

0

歸類於5組,我會做這樣的事情...

var1 <- c(NA, sample(-20:20, replace = T, size = 50)) 
thresholds <- quantile(var1, probs = seq(0, 1, length.out = 6)[-1], na.rm = T) 
cat.var <- sapply(var1, (function(i){ 
    ifelse(is.na(i), NA, min(which(i <= thresholds))) 
})) 
plot(cat.var~var1) 

如果要將此應用到整個數據幀

categorize <- function(var1){ 
    thresholds <- quantile(var1, probs = seq(0, 1, length.out = 6)[-1], na.rm = T) 
    cat.var <- sapply(var1, (function(i){ 
    ifelse(is.na(i), NA, min(which(i <= thresholds))) 
    })) 
} 
apply(df, 2, categorize) 
# alternatively 
for (j in 1:ncol(df)) { 
    df[,j] <- categorize(df[,j]) 
} 
+0

感謝您的協助!如果我想通過所有變量列來循環這個,你會如何建議在這個循環中嵌套它? – CaptainPlanet

+0

我試圖for循環改變 'VAR1' 到 'J',但我不相信它的工作: 爲(j在1:NcoI位(DAT)){ 閾值< - 分位數(J,probs = SEQ (其中(i <=閾值)) })) }(0,1,length.out = 6)[ - 1]) cat.var < - sapply – CaptainPlanet

+0

編輯我的帖子以解決您的問題 –