我尝试使用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
答案 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 - 詹姆斯