缺失值归责于一个数据帧的一些记录

问题描述:

这是我的数据框缺失值归责于一个数据帧的一些记录

Age<-c(10, 20, 15, NA, 34, NA, 40, NA, 50, NA) 
Salary<-c(100,120, 113,140,150, 160, 170, 180, 190, 200) 
dat<-data.frame(Age, Salary) 

我想填充缺失年龄的值与值12,只有当工资< 150,我想用归咎于时代的缺失值只有当工资> 150时,值为30。我一直在尝试使用dplyr来做到这一点,但无法找到一种方法,因为我是R新手。我如何在R中编写此查询?由于

+0

一个选项:'dat [dat $ Salary> = 150&is.na(dat $ Age),] $ Age

+0

@Ian使用你的逻辑,我做了一个小的改变,即dat $年龄[数据$薪水> = 150&是。 na(dat $ Age),] TKM

+0

应该是,尽管你需要在第二个括号之前的末尾附近放置逗号。 –

这可能是一个选项:

dat$Age[which(is.na(dat$Age))] = ifelse(dat$Salary[which(is.na(dat$Age))]<150,12,30) 

使用data.table:

library(data.table) 
dat <- data.table(dat) 
dat[ is.na(Age) & Salary <150, Age:=12,] 
dat[ is.na(Age) & Salary >150, Age:=30,] 

> dat 
    Age Salary 
1: 10 100 
2: 20 120 
3: 15 113 
4: 12 140 
5: 34 150 
6: 30 160 
7: 40 170 
8: 30 180 
9: 50 190 
10: 30 200 

它不是一个“oneliner”的解决方案,但很容易理解,如果你是一个初学者R.