基于R中日期的子集数据帧

时间:2018-08-31 01:57:18

标签: r dataframe

我想根据日期对数据框进行子集化。我的数据框的结构如下:

```
str(db18)
'data.frame':   15790 obs. of  9 variables:
 $ Average.Distance                : num  5462 3093 5918 5752 1563 ...
 $ Total.HIR                       : num  1367 588 1881 1745 278 ...
 $ Velocity.Band.6.Average.Distance: num  0 0 0 0 0 0 0 0 0 0 ...
 $ Date                            : Factor w/ 88 levels "1/2/18","1/3/18",..: 50 50 50 50 50 50 50 50 50 50 ...
 $ Week.Number                     : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Session.Type                    : Factor w/ 23 levels "Captain's Run",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Day                             : Factor w/ 6 levels "Friday","Monday",..: 5 5 5 5 5 5 5 5 5 5 ...
 $ Season                          : int  2018 2018 2018 2018 2018 2018 2018 2018 2018 2018 ...
 $ Round                           : Factor w/ 23 levels "BYE","PM 1","PM 2",..: 5 5 5 5 5 5 5 5 5 5 ...
#> Error: <text>:2:23: unexpected symbol
#> 1: str(db18)
#> 2: 'data.frame':   15790 obs.
#>                          ^
```

我希望从3/4/18开始创建我的数据的子集。这是我尝试运行的代码,并已通过此警告消息反弹。

```
db18 <- subset(db18,
+              Date >= "3/4/18")
Warning message:
In Ops.factor(Date, "3/4/18") : ‘>=’ not meaningful for factors
#> Error: <text>:3:9: unexpected symbol
#> 2: +              Date >= "3/4/18")
#> 3: Warning message
#>            ^
```

我知道我可能需要更改日期格式。我如何才能最好地实现这一目标,并最终从3/4/18中子集我的数据?

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

这里的问题是日期列是一个因素,这意味着您不能直接对它使用不等式运算符。在保持数据框结构不变的情况下,这里的一种选择是将date列转换为真实日期,然后进行比较:

date_comp <- as.Date("3/4/18", format="%d/%m/%y")
subset(db18, as.Date(db18$Date, format="%Y-%m-%d") >= date_comp)