首页 > 解决方案 > 如何仅获取日期早于具有相同 ID 的另一行的 ID 行?

问题描述

我有一个看起来像这样的数据框。

License.Number, DateFormatted
A019, 2018-09-20
A019, 2018-09-21
A020, 2018-09-21

我想删除具有重复许可证号的行,但只保留具有最早DateFormatted数据的行。

我如何在 R 中做到这一点?

标签: r

解决方案


一个tidyverse选项

library(tidyverse)
df %>%
    mutate(DateFormatted = as.Date(DateFormatted)) %>%
    arrange(License.Number, DateFormatted) %>%
    group_by(License.Number) %>%
    filter(row_number(License.Number) == 1)
## A tibble: 2 x 2
## Groups:   License.Number [2]
#  License.Number DateFormatted
#  <fct>          <date>
#1 A019           2018-09-20
#2 A020           2018-09-21

或在基地使用duplicated

df$DateFormatted <- as.Date(df$DateFormatted)
df[order(df$License.Number, df$DateFormatted), ]
df[!duplicated(df$License.Number), ]
#  License.Number DateFormatted
#1           A019    2018-09-20
#3           A020    2018-09-21

在这两种情况下,我们确保 thatDateFormatted是一个对象,按and (从最早到最新)Date对行进行排序,然后只保留每个 的第一个条目。License.NumberDateFormattedLicence.Number


样本数据

df <- read.table(text =
    "License.Number DateFormatted
A019 2018-09-20
A019 2018-09-21
A020 2018-09-21", header = T)

推荐阅读