我遇到了一個大問題。我必須計算年齡并在下表中添加一個新列。我嘗試了 eeptools 但無法處理 NA 值
id DOB
1 5/22/1951
2 NA
3 8/18/1984
4 5/1/1994
5 NA
我嘗試了以下代碼 btw 并出現錯誤。我想處理這個 NA 值
Age= age_calc(as.Date(na.omit(Merged_data$DOB),"%m/%d/%Y"),units = "years")
Error in if (any(enddate < dob)) { :
missing value where TRUE/FALSE needed
請幫忙,我今天有截止日期:(
uj5u.com熱心網友回復:
你是指今天的年齡嗎?如果是這樣,您可以嘗試以下基本 R 方法。如果在某個日期之前,只需更改Sys.Date()為日期格式的感興趣日期:
df$age_years <- as.numeric((Sys.Date() - as.Date(df$DOB, "%m/%d/%Y")) / 365.25)
輸出:
id DOB age_years
1 1 5/22/1951 71.43053
2 2 <NA> NA
3 3 8/18/1984 38.18754
4 4 5/1/1994 28.48734
5 5 <NA> NA
uj5u.com熱心網友回復:
我們可以這樣做:我添加了一個結束日期。首先是將字符轉換為日期格式,我們使用來自 lubridate 的 mdy() 函式。那么我們可以使用%–%Operator 來創建從出生日期到結束日期的時間間隔:
library(dplyr)
library(lubridate)
df %>%
mutate(across(-id, mdy),
age = trunc((DOB %--% enddate) / years(1)))
id DOB enddate age
<int> <date> <date> <dbl>
1 1 1951-05-22 2022-01-01 70
2 2 NA 2022-01-01 NA
3 3 1984-08-18 2022-01-01 37
4 4 1994-05-01 2022-01-01 27
5 5 NA 2022-01-01 NA
uj5u.com熱心網友回復:
library(lubridate)
df$age <- time_length(interval(as.Date(df$DOB, "%m/%d/%Y"), today()), unit = "years")
輸出
id DOB age
1 1 5/22/1951 71.43014
2 2 <NA> NA
3 3 8/18/1984 38.18904
4 4 5/1/1994 28.48767
5 5 <NA> NA
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/520917.html
標籤:r缺失数据
