这是我的数据框
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中写这个查询?感谢
答案 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)