我想根据日期对数据框进行子集化。我的数据框的结构如下:
```
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
中子集我的数据?
任何帮助将不胜感激。谢谢。
答案 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)