【问题标题】:How to filter a data table for rows with the latest timestamp in R如何在 R 中过滤具有最新时间戳的行的数据表
【发布时间】:2020-04-11 23:49:01
【问题描述】:

我有一个 48 行的数据表,通过 SQL 查询从数据库中提取。

我想过滤此数据集中的最新时间戳。

请问有人知道怎么做吗?

非常感谢!

为清楚起见附上表格:

【问题讨论】:

  • 我意识到我试图将 USER_NAME 拉入 'SYS' 的行有不同的特征,但这不会是一个常数,因此我无法基于此进行过滤。唯一适用的过滤器是最新的时间戳
  • See here 提出一个人们可以帮助解决的 R 问题。这包括数据样本和所有必要的代码。即使我们有您的代码,我们也无法在数据图片上运行它。您还标记了 2 种语言,因此不清楚您是如何尝试这样做的
  • 另外,搜索 ["[r] is:question filter max value"](stackoverflow.com/…) 会产生近 400 个帖子。至少其中一两个应该涵盖它——你做过哪些没有帮助的研究?

标签: sql r filter timestamp


【解决方案1】:

在大多数数据库中,您会执行以下操作:

select t.*
from <your logic here>
order by timestamp desc
fetch first 1 row only;

并非所有数据库都支持fetch first。在您的数据库中,它可能拼写为 limitselect top

【讨论】:

    【解决方案2】:

    在 R 中,假设您的数据存储在名为 df 的数据框中,并且:

    tail(df[order(df$TIMESTAMP), ])[1,]
    

    【讨论】:

      【解决方案3】:

      感谢两位的建议!

      我使用 dplyr 找到了答案:

      filter(my_table, timestamp_col == max(timestamp_col)

      因此,例如使用内置的 mtcars 数据集,要查找所有齿轮数量最多的汽车,请使用 过滤器(mtcars,齿轮 == 最大(齿轮))

      在基础 R 中,mtcars[mtcars$gear == max(mtcars$gear),]

      【讨论】:

        猜你喜欢
        • 2021-01-10
        • 2023-04-09
        • 2020-03-18
        • 1970-01-01
        • 1970-01-01
        • 2019-09-27
        • 2021-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多