【问题标题】:Filter by date but not time using a Y-M-D h-m-s time stamp in R studio?在 R studio 中使用 Y-M-D h-m-s 时间戳按日期而不是时间过滤?
【发布时间】:2018-03-27 12:23:53
【问题描述】:

我一直在尝试为我的研究项目筛选数据集。我的“ts”列中包含年/月/日和小时/分钟/秒的时间戳(用于时间戳)。

我一直在使用 dplyr 的“过滤器”功能:

filter(df.flat.subset1, (projID == "168", ts= 2017-08-03))

我不断收到 0 行或此错误

Error: unexpected numeric constant in:
filter(df.flat.subset1, projID == "168", ts == "2017-08-03 %H:%M:%S)

如果我试图让时间未知......

df.flat.subset1 是我的数据集(忽略 projID,它只是我在多个项目的更大数据集中的项目 168),我要过滤的日期是 2017 年 8 月 3 日。

我有数千个该日期的值,所以我无法指定确切的时间,但我想至少缩小范围。

知道我该怎么做吗??

非常感谢

【问题讨论】:

  • 请提供更多代码,不要忘记设置样式
  • 2017-08-03 你真的打算2006 吗?你想要=== 吗?
  • @mel,我不确定您所说的“样式化”是什么意思。 Meg,提供reproducible question(也称为minimal, verifiable example)对我们非常有帮助,并且会增加获得相关回复的可能性和速度。就目前而言,您的代码包含明显的语法错误,应该给出不同的错误。
  • @r2evans 我的意思是使用“三重空格和` ` 来编写代码”

标签: r dplyr rstudio


【解决方案1】:

我建议使用 lubridate 包,因为它更容易操作日期:

library(lubridate)
filter(df.flat.subset1, projID == "168", date(ts) == date('2017-08-03'))

【讨论】:

    【解决方案2】:

    如果您想忽略时间戳,您希望 format(ts, '%Y-%m-%d') == '2017-08-03' 作为过滤器。

    你也可以试试as.Date(ts) == '2017-08-03'

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 1970-01-01
      • 2019-01-08
      • 2019-01-28
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      相关资源
      最近更新 更多