R 仅在特定列中没有 NA 的行上运行

R function only on rows with no NA in specific column

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

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

如何让函数省略 BIRTH 没有值的行?否则 returns:

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

你可以使用complete.cases函数

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

使用 na.omit 删除具有 NA 值的 remove 案例并创建名为 dataNoNA 的新 table。您必须在 dataNoNA 上执行以下操作,因为维度将不同于 data1

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

用 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-詹姆斯