【问题标题】:How do I filter out different dates and times from a single data set如何从单个数据集中过滤掉不同的日期和时间
【发布时间】:2021-03-03 07:59:35
【问题描述】:

所以我试图在我的数据框中过滤掉单个鱼的日期和时间。在第 19 行下面的代码中,它本身将过滤数据框,以在我设置的参数内为我提供该 ID 的时间,但是当我添加第 20 行时,所有内容都被过滤掉并且数据框为空。

我认为我错误地链接了这些行,但我不确定应该怎么做。

ev4<-ev %>% 
  filter(ID<46|ID>135) %>% 
  filter(ID!=166) %>% #Take everything but not 166
  filter(d<25) %>% 
  filter(Receiver=="1315"|
           Receiver=="1314"|
           Receiver=="1321"|
           Receiver=="1404"|
           Receiver=="1318"|
           Receiver=="1325"|
           Receiver=="1313"|
           Receiver=="1323"|
           Receiver=="1324"|
           Receiver=="1320"|
           Receiver=="1319"|
           Receiver=="1317"|
           Receiver=="1327"|
           Receiver=="1316") %>% 
  filter(ID == "1", dt <= as.POSIXct("2020-05-23 03:20:36"), dt >= as.POSIXct("2020-05-07 23:50:12")|
  ID=="3",dt <= as.POSIXct("2020-05-03 16:13:00")) %>% 
  filter() %>% 
  mutate(sp=case_when(ID<46~"salmon", T~"trout")) %>% 
  mutate(dt=ymd_hms(dt)) %>% 
  as_tibble()

例如,如果我的数据框是这样的:

我可能想要过滤数据框,使其仅包含“2020-04-23 19:26:47”和 2020-04-23 19:26:56 之间的 ID 138 日期。但我也希望能够保持数据框的其余部分完好无损。

【问题讨论】:

  • 提供示例输入数据和预期输出。阅读有关%in% 运算符的信息。此外,您可以只使用一个filter 并将所有条件保留在其中。
  • 我不确定输入和输出数据是什么意思,那不是我在过滤中指定的“日期时间”吗?其余的代码完美地过滤掉了所有内容,只是现在我试图在特定的日期时间范围内为每个特定的“ID”指定

标签: r datetime filter lubridate


【解决方案1】:

意识到我已经走了很长一段路。将每个 ID 过滤成单独的数据帧,然后用 full_join(x, y) 将它们连接在一起

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2014-02-03
    • 2017-09-21
    • 1970-01-01
    相关资源
    最近更新 更多