【问题标题】:How to subset by date in R如何在 R 中按日期进行子集化
【发布时间】:2018-12-29 01:38:19
【问题描述】:

我正在尝试按日期进行子集化,并且我可以使用此处找到的一些代码,但新数据集包含原始数据集中的所有数据,而不是仅日期为 2018 年 6 月 4 日的数据。

我的数据集名称是完整的,我的列标题是日期。

代码如下:

Full$date <- as.Date(Full$Date, format= "%m/%d/%Y")
Firstday <- subset(Full, Date = "6/4/18" & date < "6/5/18")

这是数据的例子

Date    Weight    Length  Metabolic rate ext.
6/4/18     45        150      8
6/4/18     35        145      9
6/8/18     15        125      10 
6/8/18     16        100      2

【问题讨论】:

  • 目前还不清楚您要在这里实现什么。考虑发布一些代表Full 的示例数据,并显示您的预期输出。解释为什么将Datedate 作为单独的变量,以及subset() 中这两个条件的用途。
  • 请原谅我,我对使用 R 和使用这种语言非常陌生。我没有理由将日期和日期作为单独的变量。以下是数据示例。
  • 最好是编辑您的帖子,而不是尝试在评论中包含所有内容。此外,您可能可以将示例数据缩小到关键字段。查看有关如何构建minimal reproducible example 的指南。
  • 两个等号,Date == "6/4/18"
  • 要比较日期,你需要让双方都是日期。类似:Firstday &lt;- subset(Full, date == as.Date("2018-6-4"))date &lt; as.Date("2018-6-5") 也不是必须的。

标签: r date subset


【解决方案1】:

如果您只想选择“6/4/18”,您可以使用以下方法将其过滤掉:

library(dplyr)
Firstday <- Full %>% filter(Date == "6/4/18")

【讨论】:

  • 这一天成功了,但我希望选择这一天。
  • 编辑了答案
  • 嗯,首先你应该知道你想要实现什么:) 通过做 Date == "6/4/18" & date
  • 另外,您将如何选择日期范围?
  • 简单。假设您要选择上周的观察结果:Full %>% filter(Date > "13/7/18", Date % filter(between(Date, "13 /7/18", "20/7/18"))
【解决方案2】:

如果您已经有一个 Date 类的列并且想要按日期过滤,只需使用该列。

Firstday <- subset(Full, date == as.Date("6/5/18", format= "%m/%d/%y")

但是,请注意,当强制列 Date 时,您的格式似乎是错误的:

  • 两位数年份使用%y 而不是%Y

【讨论】:

    猜你喜欢
    • 2015-02-11
    • 1970-01-01
    • 2013-10-25
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2020-10-29
    相关资源
    最近更新 更多