【问题标题】:Replace certain dates with NA用 NA 替换某些日期
【发布时间】:2017-02-22 16:34:01
【问题描述】:

我正在尝试用 NA 替换某些日期。

我尝试了以下方法,但没有成功。

df <- data.frame(dates = seq.Date(as.Date("1910-01-01"), as.Date("1999-01-01"), "days")) %>%
       mutate_if(dates < as.Date("1990-01-05"),NA)

有人知道怎么做吗?

谢谢!

【问题讨论】:

  • 你可以做类似%&gt;% mutate_if(is.date, funs(replace(., . &lt; as.Date("1990-01-05"), NA))) where is.date &lt;- function(x) inherits(x, 'Date')
  • @akrun - 使用base::replace() 是我的主要区别。谢谢分享!

标签: r date dplyr


【解决方案1】:

mutate_if 的 if 适用于列。你只需要一个正常的变异:

df <- data.frame(dates = seq.Date(as.Date("1910-01-01"), as.Date("1999-01-01"), "days")) %>%
     mutate(newdates=ifelse(dates < as.Date("1990-01-05"), dates ,NA))

【讨论】:

    【解决方案2】:

    不使用mutate,您也可以简单地将大于目标日期的日期分配给NA,使用:

    df$dates[df$dates < as.Date("1990-01-05")] <- NA
    

    【讨论】:

    • 谢谢,我更喜欢变异版本,因为本专栏也有后续操作
    猜你喜欢
    • 1970-01-01
    • 2016-07-27
    • 2020-03-24
    • 2020-11-29
    • 2018-06-07
    • 2022-07-15
    • 2023-03-28
    • 2021-09-22
    • 1970-01-01
    相关资源
    最近更新 更多