gpt4 book ai didi

r - dplyr::if_else - 检查条件并插入 NA 作为评估的一部分

转载 作者:行者123 更新时间:2023-12-01 22:29:42 24 4
gpt4 key购买 nike

我正在尝试解决一个简单的问题。我检查特定条件,如果为真,我插入一个date值,否则插入NA(即留下一个空白单元格)。

为了让它工作,我使用了 if_else 但它顽固地拒绝工作(我已经投入了几个小时阅读 SO 和帮助页面)。

这是我尝试过但失败的:

library(tidyverse)
library(lubridate)

df <- data.frame(date = dmy(c("01/01/2019", "02/01/2019", "03/01/2019")),
status = c("Active", "Suspended", "Active"),
stringsAsFactors = FALSE)

df %>% mutate(sus_date = if_else(status == "suspended", 1, 2)) # This works

df %>% mutate(sus_date = if_else(status == "suspended", date, NA)) # Throws an Error
Error: `false` must be a `Date` object, not a logical vector
Call `rlang::last_error()` to see a backtrace.


df %>% mutate(sus_date = if_else(status == "suspended", date, NA_real_)) # Throws an error
Error in as.Date.numeric(value) : 'origin' must be supplied

这似乎是一个微不足道的问题,不应该花这么长时间才能找到答案!

有什么想法可以做到这一点吗?

ps。我想避免使用 base::ifelse 因为它会更改日期格式

最佳答案

您也可以将 NA 强制转换为日期,即:

df %>% mutate(sus_date = if_else(status == "Suspended", date, ymd(NA))) 
date status sus_date
1 2019-01-01 Active <NA>
2 2019-01-02 Suspended 2019-01-02
3 2019-01-03 Active <NA>

关于r - dplyr::if_else - 检查条件并插入 NA 作为评估的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59024346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com