缺少数据框中某些记录的值估算

时间:2017-05-25 20:20:32

标签: r

这是我的数据框

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)

我希望只有当Salary&lt; 150,我只想在Salary&gt; 150时将Age的缺失值归为30。我一直试图用dplyr做这个,但是因为我是R的新手而无法找到方法。我如何在R中写这个查询?感谢

2 个答案:

答案 0 :(得分:1)

使用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的初学者,很容易理解。

答案 1 :(得分:0)

这可能是一个选择:

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