R仅在特定列中没有NA的行上起作用

时间:2017-09-18 16:42:05

标签: r na

我尝试使用age_calc库中的eeptools来计算出生日期的年龄:

data1$AGE <- floor(age_calc(as.Date(data1$BIRTH), units = "years"))

如何使该函数省略BIRTH没有值的行?否则它返回:

Error in if (any(enddate < dob)) { : 
  missing value where TRUE/FALSE needed

3 个答案:

答案 0 :(得分:1)

使用na.omit删除包含NA值的案例,并创建名为dataNoNA的新表格。您必须在dataNoNA上执行以下操作,因为维度与data1不同。

dataNoNA <- na.omit(data1)
dataNoNA$AGE <- floor(age_calc(as.Date(dataNoNA$BIRTH), units = "years"))

答案 1 :(得分:0)

你可以使用complete.cases函数

birth<-complete.cases(data1$BIRTH)
data1$AGE <- floor(age_calc(as.Date(birth), units = "years"))

答案 2 :(得分:0)

尝试使用tidyverse:

library(eeptools)
library(tidyverse)

# test data
data(stuatt)

# create NA's in a birth column
stuatt <- mutate(stuatt, birth = as.Date(birth_date, origin = "1960/01/01"))

stuatt <- group_by(stuatt, sid) %>%
      mutate(age = ifelse(is.na(birth), birth, 
                age_calc(as.Date(birth), units = "years")))
View(stuatt)

它将保留数据框中的所有值 - 保留缺失值。

HTH - 詹姆斯