代码之家  ›  专栏  ›  技术社区  ›  PrzeM

R函数仅对特定列中没有NA的行执行

na r
  •  0
  • PrzeM  · 技术社区  · 7 年前

    age_calc 从…起 eeptools 图书馆:

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

    如何使函数忽略出生没有值的行?否则返回:

    Error in if (any(enddate < dob)) { : 
      missing value where TRUE/FALSE needed
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   pogibas    7 年前

    使用 na.omit 删除带有NA值的事例并创建名为 dataNoNA . 您必须在上执行以下操作 dataNoNA公司 因为尺寸将不同于 data1

    dataNoNA <- na.omit(data1)
    dataNoNA$AGE <- floor(age_calc(as.Date(dataNoNA$BIRTH), units = "years"))
    
        2
  •  0
  •   leas    7 年前

    您可以使用完整的。案例功能

    birth<-complete.cases(data1$BIRTH)
    data1$AGE <- floor(age_calc(as.Date(birth), units = "years"))
    
        3
  •  0
  •   James Thomas Durant    7 年前

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