从连续变量w /缩放数据创建分类变量

时间:2017-08-12 23:18:35

标签: r categorical-data continuous

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

背景 我正在处理来自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 :(得分: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])
}