从带缩放数据的连续变量创建分类变量

Creating categorical variable from continuous variable w/ scaled data

我在这个社区潜伏了一段时间,但这是我的第一个问题...

背景: 我正在处理来自 UCI 的乳腺癌数据。 DATA

我想做的是潜在 Class 分析(从技术上讲是潜在特征,因为这些是连续变量),但我必须首先为每个变量缩放我的值。

一旦我缩放,我现在有 32 个变量,每个缩放并且范围从负到正(我相信 poLCA 函数不能使用负数或零)。有关我的缩放功能之一的示例,请参见下文。

> summary(scaled.dat.1)
   V1         

分钟。 :-2.0279
第一曲:-0.6888
中位数:-0.2149
均值:0.0000
第三题:0.4690
最大限度。 : 3.9678

问题 如何将这些缩放的连续值更改为 1:5?

的分类值

要分为 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])
}