用零替换缺失值 -2 水平不同的列 r

Replace missing values with zero -2 levels different columns r

我有一个包含多列的数据集。我想用 when JOB = Student and HOME_VAL = 0

替换缺失值

LOGIC if JOB == Student and HOME_VAL == ' ' 然后 HOME_VAL==0

if(DT$JOB == 'Student' & DT$HOME_VAL=='') {
    DT$HOME_VAL<-0
}

数据

HOME_VAL  JOB
99     Student
 0     Home Maker
          Student
 00    Home Maker
          Student
 000   Student
 000   Professor

正在寻找

HOME_VAL  JOB
99     Student
 0     Home Maker
 0        Student
 00    Home Maker
 0        Student
 000   Student
 000   Professor

我们可以使用dplyr::mutate:

 library(dplyr);
 library(magrittr);
 df %>%
    mutate_if(is.factor, as.character) %>%
    mutate(HOME_VAL = ifelse(HOME_VAL == "" & JOB == "Student", 0, HOME_VAL))
#  HOME_VAL        JOB
#1    99    Student
#2     0 Home Maker
#3        0    Student
#4    00 Home Maker
#5        0    Student
#6   000    Student
#7   000  Professor

解释:mutate_iffactor列转换为character列,mutate+ifelse按照你的逻辑进行替换。


或以 R 为基数:

df$HOME_VAL = as.character(df$HOME_VAL);
df$HOME_VAL = ifelse(df$HOME_VAL == "" & df$JOB == "Student", 0, df$HOME_VAL);

示例数据

df <- read.table(text =
   "HOME_VAL  JOB
99     Student
0     'Home Maker'
''          Student
00    'Home Maker'
''          Student
000   Student
000   Professor", header = T)