【问题标题】:How can I replace categorical values with numeric values?如何用数值替换分类值?
【发布时间】:2020-11-08 03:29:25
【问题描述】:

如何在 R 中用数值替换分类值?更具体地说,我有变量trstep,它描述了对欧盟议会的信任程度。该变量重新编码如下:

 0= No trust at all
 1=1 
 2=2
 3=3
 4=4
 5=5 
 6=6 
 7=7 
 8=8 
 9=9 
 10= Complete trust

这个变量有超过 40000 个观察值,这就是为什么我不能轻松地使用一些代码。我想将“完全不信任”替换为 0,将“完全信任”替换为 10,并排除缺失值。欢迎您的帮助!

【问题讨论】:

    标签: r replace subset numeric categorical-data


    【解决方案1】:

    一种简单的方法是先转换为因子,然后再转换为整数。由于因子在内部被编码为从 1 开始的连续整数,因此减去 1 即可得到 0:10 范围内的整数。

    trstep <- factor(trstep, levels = levels)
    as.integer(trstep) - 1
    # [1]  2  2  9  1  5 10  4  3  5  8  9 10  4  2 10  8  8  8  2  7  9  6  9  8  2
    #[26]  3  0 10  6  4
    

    测试数据

    set.seed(123)
    levels <- c("No trust at all", 1:9, "Complete trust")
    trstep <- sample(levels, 30, TRUE)
    

    【讨论】:

      【解决方案2】:

      如果您的数据框名为df,您可以尝试:

      #Convert `trstep` to character
      df$trstep <- as.character(df$trstep)
      #Change "No trust at all" to 0
      df$trstep[df$trstep == "No trust at all"] <- 0
      #Change "Complete trust" to 10
      df$trstep[df$trstep == "Complete trust"] <- 10
      #Remove NA values
      df <- df[!is.na(df$trstep), ]
      #If needed convert  trstep to numeric. 
      #df$trstep <- as.numeric(df$trstep)
      

      【讨论】:

      • “$ 运算符对原子向量无效”,这是我今天再次运行代码后得到的错误消息。你能帮我解决这个问题吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多