2017-08-12 139 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

编辑我的帖子以解决您的问题 –