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