【问题标题】:Creating categorical variable from continuous variable w/ scaled data从带有缩放数据的连续变量创建分类变量
【发布时间】:2018-01-21 04:24:52
【问题描述】:

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

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

我正在尝试做的是潜在类分析(技术上是潜在配置文件,因为这些是连续变量),但我必须首先调整每个变量的值。

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

> summary(scaled.dat.1)
   V1         

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

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

【问题讨论】:

  • 看看?cut

标签: r categorical-data continuous


【解决方案1】:

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

【讨论】:

  • 感谢您的帮助!如果我想在所有变量列中循环,你会如何建议将它嵌套在那个循环中?
  • 我试过这个 for 循环将 'var1' 更改为 'j' 但我不相信它有效:for (j in 1:ncol(dat)) { thresholds
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 2019-05-05
  • 1970-01-01
相关资源
最近更新 更多