【问题标题】:Using as.factor to create a new categorical value in r使用 as.factor 在 r 中创建一个新的分类值
【发布时间】:2020-04-14 20:21:29
【问题描述】:

我不太擅长用 r 编码,我需要帮助来完成一个统计类项目。我需要在 r 中创建一个新的分类值 degOB,它与我的数据库 dd 中的值 POBAD 相关。

degOB = 0 表示 POBAD

【问题讨论】:

  • ?cut 是在这种情况下使用的最佳选择
  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则会更容易为您提供帮助。

标签: r statistics categorical-data


【解决方案1】:

执行此操作的简单方法是使用@Jaap 提到的cut。首先,我们需要创建一些与您的数据相似的数据:

set.seed(42)
POBAD <- sample(25:40, 25, replace=TRUE)
dd <- data.frame(POBAD)

现在我们添加新变量:

dd$degOB <- cut(dd$POBAD, breaks=c(0, 30, 33, max(dd$POBAD)))
levels(dd$degOB) <- 0:2
str(dd)
# 'data.frame': 25 obs. of  2 variables:
#  $ POBAD: int  25 29 25 33 34 28 26 34 25 40 ...
#  $ degOB: Factor w/ 3 levels "0","1","2": 1 1 1 2 3 1 1 3 1 3 ...

这是最简单的方法。使用as.factor 只会让它变得更复杂,但如果你想这样做,请使用此语句而不是使用cut 的语句。

dd$degOB <- as.factor(ifelse(dd$POBAD <= 30, 0, ifelse(dd$POBAD > 30 & dd$POBAD <= 33, 1, 2)))

【讨论】:

    【解决方案2】:

    为了帮助您,请发布您的代码以及您迄今为止尝试过的内容,而不是看起来像我们为您做作业:)

    设置一个因子函数并将其输入像here这样的向量

    # Create Ordinal categorical vector 
    degree_vector <- c('degOB', 'POBAD', ...)
    # Convert `degree_vector` to a factor with ordered level
    factor_degree <- factor(degree_vector, order = TRUE, levels =c('degOB', 'POBAD', '', ))
    # Print the new variable
    factor_degree 
    

    选项 2:理解起来要更简单,这就是我要做的

    # Step 1 setup your data frame
    d <- data.frame(variable = c("degOB", "POBAD", "", ""))
    
    # Step 2 your factor
    d$variable.r <- as.integer(as.factor(d$variable))
    
    # Step 3 add a mapping to your degrees fill out the rest
    mapping <- c("degOB" = 0, "POBAD"  <= 30, ...)
    d$variable.r <- mapping[d$variable]
    

    【讨论】:

      【解决方案3】:

      这是我尝试过的: dd$degOB = as.factor(ifelse(dd$POBAD 33, 2, NA))) )

      我相信我得到了正确的答案。感谢您的帮助!

      【讨论】:

      • 数据库已经用其他变量建立,通过getcsv = function(x) read.csv(file=paste("umich.edu/~dnoll/BME503/",x,sep=""), header=T) dd = getcsv("diabetes_dat .csv") 附加(dd)
      猜你喜欢
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 2020-10-09
      • 1970-01-01
      相关资源
      最近更新 更多