缺失值归责于一个数据帧的一些记录
问题描述:
这是我的数据框缺失值归责于一个数据帧的一些记录
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中编写此查询?由于
答
这可能是一个选项:
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.
一个选项:'dat [dat $ Salary> = 150&is.na(dat $ Age),] $ Age
@Ian使用你的逻辑,我做了一个小的改变,即dat $年龄[数据$薪水> = 150&是。 na(dat $ Age),] TKM
应该是,尽管你需要在第二个括号之前的末尾附近放置逗号。 –