【问题标题】:Filtering rows in a data frame based on date column根据日期列过滤数据框中的行
【发布时间】:2016-10-29 01:33:27
【问题描述】:

我有以下数据框:

id        day           total_amount
 1       2016-06-09         1000
 1       2016-06-23          100
 1       2016-06-24          200
 1       2015-11-27         2392
 1       2015-12-16          123
 7       2015-07-09          200
 7       2015-07-09         1000
 7       2015-08-27       100018
 7       2015-11-25         1000

如何使用基本 R 包和其他包(例如 dplyr )丢弃从今天起日期列超过三周的行。

【问题讨论】:

    标签: r datetime dataframe dplyr


    【解决方案1】:

    只是为了填写另外两种可能性(就语法而言,它们几乎相同,并且与@akrun 对subset 的使用非常相似)。

    您可以在如下使用with来缩短字符数:

    with(df, df[as.Date(day) > Sys.Date()-21,])
    

    正如您提到希望查看其他包的愿望,这是使用 data.table 包删除旧观察的一种方法。

    library(data.table)
    # turn df into a data.table
    setDT(df)
    
    df[as.Date(day) > Sys.Date()-21,]
    

    数据

    df <- read.table(header=T, text="id        day           total_amount
     1       2016-06-09         1000
     1       2016-06-23          100
     1       2016-06-24          200
     1       2015-11-27         2392
     1       2015-12-16          123
     7       2015-07-09          200
     7       2015-07-09         1000
     7       2015-08-27       100018
     7       2015-11-25         1000")
    

    【讨论】:

      【解决方案2】:

      我们可以使用subset

       subset(df1, as.Date(day) > Sys.Date()-21)
      

      【讨论】:

      • subset(test_df, as.Date(day) > Sys.Date()-21) 似乎是正确的,你的想法是什么?
      • @sanaz 更正了这一点。我以为是另一种方式。对不起
      猜你喜欢
      • 1970-01-01
      • 2020-05-05
      • 2022-11-23
      • 2015-11-06
      • 2021-08-19
      • 2013-06-09
      • 2022-12-21
      • 2020-03-31
      • 2019-04-29
      相关资源
      最近更新 更多