首页 > 解决方案 > 根据条件更改列的值(缺失数据和分类)

问题描述

对于一份问卷,我想制作一份 df1 的副本,其中 x 列发生以下两件事:

  1. 将 x 的缺失数据(编码为 0)替换为“-1”。所以所有的0都必须变成-1。

  2. x 的特定部分以数字而不是类别编码。我创建了一个函数来将不同的类别分配给不同的值

categorise <- function(a_vector) { a_vector = case_when(
        a_vector >= 0 & a_vector < 50 ~ 1,
        a_vector >= 50 & a_vector < 500 ~ 2,
        a_vector >= 500 & a_vector < 5000 ~ 3,
        a_vector >= 5000 & a_vector < 50000 ~ 4,
        a_vector >= 50000 & a_vector < 500000 ~ 5,
        a_vector >= 500000 & a_vector < 5000000 ~ 6,
        a_vector >= 5000000 & a_vector < 50000000 ~ 7,
        a_vector >= 50000000 & a_vector < 500000000 ~ 8)
        strong texta_vector }

标签: rvectortransformapplyna

解决方案


我们可以用findInterval

replace(findInterval(a_vector, c(0, 50, 500, 5000, 50000, 
      500000, 5000000, 50000000)), a_vector == 0, -9)
#[1] -9  1  1  2  2  3  4

或与cut

as.integer(cut(a_vector, breaks =  c(0, 50, 500, 5000, 50000, 500000, 5000000, 50000000)))

数据

a_vector <- c(0L, 1L, 10L, 65L, 250L, 555L, 5000L)

推荐阅读