我有一个看起来像这样的数据框。
License.Number, DateFormatted
A019, 2018-09-20
A019, 2018-09-21
A020, 2018-09-21
我想删除具有重复许可证号的行,但仅保留具有最早 DateFormatted
数据的行。
如何在 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
或者在基础上使用重复
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
在这两种情况下,我们都确保 DateFormatted
是 Date
对象,并按 License.Number
和 DateFormatted
对行进行排序>(从最早到最晚),然后仅保留每个 Licence.Number
的第一个条目。
示例数据
df <- read.table(text =
"License.Number DateFormatted
A019 2018-09-20
A019 2018-09-21
A020 2018-09-21", header = T)
关于r - 如何仅获取 ID 的日期早于具有相同 ID 的另一行的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52655558/