我有一個帶有 1 個日期列的資料框(轉換為.Date)。
我正在嘗試撰寫一個回圈以在另一列中創建一個值,以“檢查”死亡日期與固定值(今天的日期)的比較。
fix_date= as.Date(2021-10-28)
for (i in 1:length(df$Death.date)) {
if (df$Death.date[i] < as.Date(fix_date)){
df$death_check[i]<-"good"
}
}
所以對于每一行,如果Death.date < fix_date,用“good”填充death_check列。
它給了我這個錯誤代碼:
if (new_possible_population$Death.date[i] < as.Date(exploratory_date)) { 中的錯誤:需要 TRUE/FALSE 的缺失值
這是為有關日期值的回圈編碼的正確方法嗎?或者有比使用回圈更好的方法嗎?
uj5u.com熱心網友回復:
您肯定想為此使用矢量化函式,請查看dplyr軟體包:
df %>%
mutate(death_check = case_when(Death.date < as.Date("2021-10-28") ~ "good"))
正如你所看到的,我""也在日期周圍添加了,這是必要的。如果您df$Death.date實際上不是Date格式,您也可以在此處進行更改。
uj5u.com熱心網友回復:
library(data.table)
df <- data.table(
Death.date = sample(seq(as.Date("2020-01-01"), by = "month", length.out = 25))
)
# just a TRUE for "good" which makes FALSE "bad"
df[, death_check_1 := Death.date < Sys.time()]
# written "good"
df[Death.date < Sys.time(), death_check_2 := "good"]
uj5u.com熱心網友回復:
這是使用sapply和的另一種選擇ifelse:
# make df using Merijn's code
df <- data.frame(Death.date = sample(seq(as.Date("2020-01-01"),
by = "month",
length.out = 25)))
# set the date to check against
fix_date <- as.Date("2021-10-28")
# make the comparison, return "good" or NA
df$death_check <- sapply(df$Death.date, function(x) {
ifelse(x < fix_date, "good", NA)
})
df
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340012.html
