【问题标题】:Remove Rows by Max Date按最大日期删除行
【发布时间】:2019-03-01 04:12:34
【问题描述】:

我有一个如下的数据框:

Date Pulled         Date      Col3   Col4
2019-01-19     2019-01-17        8      9
2019-01-19     2019-01-18       14      9
2019-01-20     2019-01-18        8      0
2019-01-20     2019-01-18       15     14
2019-01-18     2019-01-17       18      7

我要写逻辑说明-

每当Date Pulled 具有不同的值并且鉴于Date Pulled 的值不同,对应的Date 值在该列中是相同的,我只想保留具有Date Pulled 的最大值的行。

Date Pulled         Date      Col3   Col4
2019-01-19     2019-01-17        8      9
2019-01-20     2019-01-18        8      0
2019-01-20     2019-01-18       15     14

就上下文而言,我每天都在提取数据,每次都有 7 天。如果我将结果合并在一起,将会有重复的日期(因此重复的日期列)。我只想保留我拉入的最新报告,因此拉出的最大日期。

【问题讨论】:

  • 我把问题说得更清楚了,如果有帮助请告诉我

标签: r dplyr


【解决方案1】:

假设'Col1'和'Col2'是Date类,按'Col2'和filter分组'Col1'等于'Col1'的max的行

library(dplyr)
df1 %>%
    group_by(Col2) %>% 
    filter((Col1 == max(Col1) )
# A tibble: 3 x 4
# Groups:   Col2 [2]
#  Col1       Col2        Col3  Col4
#  <date>     <date>     <int> <int>
#1 2019-01-19 2019-01-17     8     9
#2 2019-01-20 2019-01-18     8     0
#3 2019-01-20 2019-01-18    15    14

数据

df1 <- structure(list(Col1 = structure(c(17915, 17915, 17916, 17916, 
17914), class = "Date"), Col2 = structure(c(17913, 17914, 17914, 
17914, 17913), class = "Date"), Col3 = c(8L, 14L, 8L, 15L, 18L
), Col4 = c(9L, 9L, 0L, 14L, 7L)), row.names = c(NA, -5L), class = "data.frame")

【讨论】:

  • 这不起作用,因为它按天分组,即使有允许重复的情况
  • @nak5120 我编辑了帖子。可能这个逻辑适合你
【解决方案2】:

我只想保留我提取的最新报告,因此最大日期提取。

这似乎有效:

inner_join(
  DT, 
  DT %>% group_by(Date) %>% summarise(Pulled = max(Pulled))
)

Joining, by = c("Pulled", "Date")
      Pulled       Date Col3 Col4
1 2019-01-19 2019-01-17    8    9
2 2019-01-20 2019-01-18    8    0
3 2019-01-20 2019-01-18   15   14

在哪里

DT = structure(list(Pulled = c("2019-01-19", "2019-01-19", "2019-01-20", 
"2019-01-20", "2019-01-18"), Date = c("2019-01-17", "2019-01-18", 
"2019-01-18", "2019-01-18", "2019-01-17"), Col3 = c(8L, 14L, 
8L, 15L, 18L), Col4 = c(9L, 9L, 0L, 14L, 7L)), row.names = c(NA, 
-5L), class = "data.frame")

(也就是说,我没有费心转换为日期类。)

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2017-06-24
    • 2013-09-05
    • 1970-01-01
    相关资源
    最近更新 更多