【问题标题】:I would like to select >= as.Date('2008-01-01 ') and the NAs我想选择 >= as.Date(\'2008-01-01 \') 和 NA
【发布时间】:2022-11-16 01:23:33
【问题描述】:

我努力了

  1. subset(df,df$date >= as.Date('2008-01-01'),na.rm = FALSE)
  2. 子集(df,df$date >= as.Date('2008-01-01'),na.omit = FALSE)

    我也失去了所有拥有 NA 的人。请提出解决方法

    我试过 subset(df,df$date >= as.Date('2008-01-01'),na.rm = FALSE)

【问题讨论】:

  • 您介意分享一些示例数据,以便我们了解您的问题并给您答复吗?
  • 你可以试试df[df$date >= as.Date('2008-01-01') | is.na(df$date),]

标签: r date na lubridate


【解决方案1】:

如果您查看?subset 帮助页面,它没有任何名为na.rmna.omit 的参数。这些不是神奇的关键字。它们是某些(但不是全部)函数采用的常见参数,您需要查看函数的帮助页面以查看它们是否适用于某个函数。

此外,使用subset 而不仅仅是[ 的意义在于,在传递data 参数后,您不必使用data$

subset(df, date >= "2008-01-01" | is.na(date))

这应该可以保留日期 >= 2008-01-01 或日期为 NA 的行。

【讨论】:

    【解决方案2】:

    这是一个使用来自dplyr 包的filter 的示例:而不是subset

    library(dplyr)
    # create tibble
    dat <- tibble(x = c(rep(as.Date('2008-01-01'),10)))
    
    # add NA to tibble       
    set.seed(123)
    df <- as.data.frame(lapply(dat, (x) replace(x, sample(length(x), .3*length(x)), NA)))
    
    # filter all  2008-01-01 and NA
    df %>% 
      filter(x == "2008-01-01" | is.na(.))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多