return 列中的最高日期

return highest date in column

我有一个包含发射器代码和相应日期的列。我想通过选择所有具有最新日期和其余列的唯一发射器代码来缩小我的数据集。因此,例如,如果发射器代码:A69-1602-59778 有日期(2019-11-11;2019-11-12;2019-11-13),我只想要 2019-11-13 和相应的发射器代码。我怎样才能做到这一点?

我应该得到一个包含 119 行(119 个唯一发射器代码)和相应最新日期的数据框。注意:Dput 可能不包含所有发射器代码,因为它是一个大型数据集。

我的数据:

structure(list(Date = structure(c(18211, 18211, 18211, 18211, 
18211, 18211, 18211, 18211, 18211, 18211, 18212, 18212, 18212, 
18212, 18212, 18212, 18212, 18212, 18212, 18212, 18213, 18213, 
18213, 18213, 18213, 18213, 18213, 18213, 18213, 18213, 18213, 
18213, 18214, 18214, 18214, 18214, 18214, 18214, 18214, 18214, 
18215, 18215, 18215, 18215, 18215, 18215, 18215, 18215, 18216, 
18216, 18216, 18216, 18216, 18216, 18216, 18216, 18216, 18216, 
18217, 18217, 18217, 18217, 18217, 18217, 18217, 18217, 18217, 
18217, 18217, 18217, 18217, 18218, 18218, 18218, 18218, 18218, 
18218, 18218, 18218, 18218, 18219, 18219, 18219, 18219, 18219, 
18219, 18219, 18219, 18219, 18219, 18220, 18220, 18220, 18220, 
18220, 18220, 18220, 18220, 18220, 18220), class = "Date"), Transmitter = c("A69-1602-59769", 
"A69-1602-59776", "A69-1602-59775", "A69-1602-59771", "A69-1602-59774", 
"A69-1602-59773", "A69-1602-59772", "A69-1602-59777", "A69-1602-59778", 
"A69-1602-59770", "A69-1602-59773", "A69-1602-59775", "A69-1602-59777", 
"A69-1602-59771", "A69-1602-59772", "A69-1602-59774", "A69-1602-59778", 
"A69-1602-59776", "A69-1602-59765", "A69-1602-59761", "A69-1602-59772", 
"A69-1602-59777", "A69-1602-59774", "A69-1602-59773", "A69-1602-59776", 
"A69-1602-59770", "A69-1602-59759", "A69-1602-59759", "A69-1602-59761", 
"A69-1602-59775", "A69-1602-59765", "A69-1602-59771", "A69-1602-59774", 
"A69-1602-59773", "A69-1602-59772", "A69-1602-59777", "A69-1602-59778", 
"A69-1602-59776", "A69-1602-59775", "A69-1602-59771", "A69-1602-59770", 
"A69-1602-59772", "A69-1602-59773", "A69-1602-59774", "A69-1602-59777", 
"A69-1602-59759", "A69-1602-59778", "A69-1602-59769", "A69-1602-59774", 
"A69-1602-59772", "A69-1602-59773", "A69-1602-59777", "A69-1602-59759", 
"A69-1602-59775", "A69-1602-59761", "A69-1602-59778", "A69-1602-59770", 
"A69-1602-59765", "A69-1602-59773", "A69-1602-59774", "A69-1602-59777", 
"A69-1602-59772", "A69-1602-59759", "A69-1602-59765", "A69-1602-59761", 
"A69-1602-59770", "A69-1602-59778", "A69-1602-59769", "A69-1602-59760", 
"A69-1602-59775", "A69-1602-59768", "A69-1602-59773", "A69-1602-59777", 
"A69-1602-59772", "A69-1602-59774", "A69-1602-59768", "A69-1602-59770", 
"A69-1602-59761", "A69-1602-59767", "A69-1602-59769", "A69-1602-59777", 
"A69-1602-59772", "A69-1602-59774", "A69-1602-59773", "A69-1602-59761", 
"A69-1602-59769", "A69-1602-59778", "A69-1602-59775", "A69-1602-59767", 
"A69-1602-59759", "A69-1602-59772", "A69-1602-59777", "A69-1602-59773", 
"A69-1602-59774", "A69-1602-59759", "A69-1602-59769", "A69-1602-59778", 
"A69-1602-59756", "A69-1602-59771", "A69-1602-59775"), Batch.location = c("Den Oever", 
"Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever", 
"Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever", 
"Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever", 
"Den Oever", "Den Oever", "Medemblik", "Medemblik", "Den Oever", 
"Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever", 
"Medemblik", "Medemblik", "Medemblik", "Den Oever", "Medemblik", 
"Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever", 
"Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever", 
"Den Oever", "Den Oever", "Den Oever", "Den Oever", "Medemblik", 
"Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever", 
"Den Oever", "Medemblik", "Den Oever", "Medemblik", "Den Oever", 
"Den Oever", "Medemblik", "Den Oever", "Den Oever", "Den Oever", 
"Den Oever", "Medemblik", "Medemblik", "Medemblik", "Den Oever", 
"Den Oever", "Den Oever", "Medemblik", "Den Oever", "Medemblik", 
"Den Oever", "Den Oever", "Den Oever", "Den Oever", "Medemblik", 
"Den Oever", "Medemblik", "Medemblik", "Den Oever", "Den Oever", 
"Den Oever", "Den Oever", "Den Oever", "Medemblik", "Den Oever", 
"Den Oever", "Den Oever", "Medemblik", "Medemblik", "Den Oever", 
"Den Oever", "Den Oever", "Den Oever", "Medemblik", "Den Oever", 
"Den Oever", "Ketelhaven", "Den Oever", "Den Oever"), Location.Receiver = c("Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Medemblik Ijsselmeer, haven", 
"Medemblik Ijsselmeer, haven", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Stavoren Ijsselmeer", "Medemblik Ijsselmeer, haven", "Medemblik Ijsselmeer, gemaal", 
"Medemblik Ijsselmeer, haven", "Den Oever Ijsselmeer", "Medemblik Ijsselmeer, haven", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Stavoren Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Medemblik Ijsselmeer, haven", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Medemblik Ijsselmeer, haven", "Den Oever Ijsselmeer", "Medemblik Ijsselmeer, haven", 
"Den Oever Ijsselmeer", "Stavoren Ijsselmeer", "Medemblik Ijsselmeer, haven", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Medemblik Ijsselmeer, gemaal", "Medemblik Ijsselmeer, haven", 
"Medemblik Ijsselmeer, haven", "Stavoren Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Medemblik Ijsselmeer, haven", "Den Oever Ijsselmeer", 
"Medemblik Ijsselmeer, gemaal", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Medemblik Ijsselmeer, gemaal", 
"Stavoren Ijsselmeer", "Medemblik Ijsselmeer, haven", "Medemblik Ijsselmeer, gemaal", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Medemblik Ijsselmeer, haven", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Medemblik Ijsselmeer, gemaal", "Medemblik Ijsselmeer, gemaal", 
"Den Oever Ijsselmeer", "Den Oever Ijsselmeer", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Medemblik Ijsselmeer, gemaal", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer", "Ramspol 1 (zuid) ", "Den Oever Ijsselmeer", 
"Den Oever Ijsselmeer"), Length = c(63.1, 62.3, 67.9, 65, 68.1, 
65.7, 62.5, 65.7, 66.2, 63.1, 65.7, 67.9, 65.7, 65, 62.5, 68.1, 
66.2, 62.3, 61.4, 56, 62.5, 65.7, 68.1, 65.7, 62.3, 63.1, 56.5, 
56.5, 56, 67.9, 61.4, 65, 68.1, 65.7, 62.5, 65.7, 66.2, 62.3, 
67.9, 65, 63.1, 62.5, 65.7, 68.1, 65.7, 56.5, 66.2, 63.1, 68.1, 
62.5, 65.7, 65.7, 56.5, 67.9, 56, 66.2, 63.1, 61.4, 65.7, 68.1, 
65.7, 62.5, 56.5, 61.4, 56, 63.1, 66.2, 63.1, 70, 67.9, 62.8, 
65.7, 65.7, 62.5, 68.1, 62.8, 63.1, 56, 61.3, 63.1, 65.7, 62.5, 
68.1, 65.7, 56, 63.1, 66.2, 67.9, 61.3, 56.5, 62.5, 65.7, 65.7, 
68.1, 56.5, 63.1, 66.2, 48.2, 65, 67.9), Weight = c(3515, 2944, 
4553, 4112, 4868, 4105, 3404, 3998, 4029, 3535, 4105, 4553, 3998, 
4112, 3404, 4868, 4029, 2944, 3429, 2465, 3404, 3998, 4868, 4105, 
2944, 3535, 2565, 2565, 2465, 4553, 3429, 4112, 4868, 4105, 3404, 
3998, 4029, 2944, 4553, 4112, 3535, 3404, 4105, 4868, 3998, 2565, 
4029, 3515, 4868, 3404, 4105, 3998, 2565, 4553, 2465, 4029, 3535, 
3429, 4105, 4868, 3998, 3404, 2565, 3429, 2465, 3535, 4029, 3515, 
4402, 4553, 3466, 4105, 3998, 3404, 4868, 3466, 3535, 2465, 2846, 
3515, 3998, 3404, 4868, 4105, 2465, 3515, 4029, 4553, 2846, 2565, 
3404, 3998, 4105, 4868, 2565, 3515, 4029, 1421, 4112, 4553)), row.names = c(716209L, 
1073805L, 1019330L, 812249L, 987220L, 934268L, 840464L, 1156663L, 
1226152L, 795888L, 928943L, 1020561L, 1138203L, 807648L, 855925L, 
966957L, 1234618L, 1085184L, 626931L, 605844L, 846794L, 1129076L, 
982617L, 955912L, 1081788L, 799297L, 542223L, 525478L, 599496L, 
1009592L, 629158L, 814527L, 977839L, 875687L, 842029L, 1102446L, 
1229579L, 1085547L, 1000314L, 807813L, 801897L, 829339L, 885972L, 
984860L, 1121520L, 539123L, 1223695L, 706154L, 973168L, 857036L, 
922413L, 1131675L, 550919L, 1053493L, 589745L, 1230983L, 795265L, 
628214L, 947900L, 977889L, 1127631L, 834415L, 546178L, 629343L, 
594275L, 799017L, 1220587L, 722244L, 584846L, 1061698L, 684508L, 
911860L, 1157213L, 857431L, 989969L, 679834L, 803111L, 588690L, 
659389L, 724411L, 1168275L, 837874L, 982503L, 932847L, 586835L, 
769907L, 1232536L, 1032207L, 661232L, 555049L, 846636L, 1209851L, 
934974L, 984655L, 552925L, 746638L, 1229866L, 501088L, 815912L, 
1020860L), class = "data.frame")

请使用 data.tablemagrittr(对于管道)找到以下一种可能的解决方案

Reprex

  • 代码
library(data.table)
library(magrittr)

results <- setDT(df)[, Date := as.Date(Date)][] %>% 
  setorder(., -Date) %>% 
  unique(., by ="Transmitter")

(可能是更优雅的解决方案)

results <- setDT(df)[, Date := as.Date(Date)][] %>% 
  unique(., by ="Transmitter", fromLast = TRUE)
  • 输出
results
#>           Date    Transmitter Batch.location            Location.Receiver
#>  1: 2019-11-20 A69-1602-59772      Den Oever         Den Oever Ijsselmeer
#>  2: 2019-11-20 A69-1602-59777      Den Oever         Den Oever Ijsselmeer
#>  3: 2019-11-20 A69-1602-59773      Den Oever         Den Oever Ijsselmeer
#>  4: 2019-11-20 A69-1602-59774      Den Oever         Den Oever Ijsselmeer
#>  5: 2019-11-20 A69-1602-59759      Medemblik Medemblik Ijsselmeer, gemaal
#>  6: 2019-11-20 A69-1602-59769      Den Oever         Den Oever Ijsselmeer
#>  7: 2019-11-20 A69-1602-59778      Den Oever         Den Oever Ijsselmeer
#>  8: 2019-11-20 A69-1602-59756     Ketelhaven            Ramspol 1 (zuid) 
#>  9: 2019-11-20 A69-1602-59771      Den Oever         Den Oever Ijsselmeer
#> 10: 2019-11-20 A69-1602-59775      Den Oever         Den Oever Ijsselmeer
#> 11: 2019-11-19 A69-1602-59761      Medemblik  Medemblik Ijsselmeer, haven
#> 12: 2019-11-19 A69-1602-59767      Medemblik Medemblik Ijsselmeer, gemaal
#> 13: 2019-11-18 A69-1602-59768      Medemblik Medemblik Ijsselmeer, gemaal
#> 14: 2019-11-18 A69-1602-59770      Den Oever          Stavoren Ijsselmeer
#> 15: 2019-11-17 A69-1602-59765      Medemblik  Medemblik Ijsselmeer, haven
#> 16: 2019-11-17 A69-1602-59760      Medemblik  Medemblik Ijsselmeer, haven
#> 17: 2019-11-14 A69-1602-59776      Den Oever         Den Oever Ijsselmeer
#>     Length Weight
#>  1:   62.5   3404
#>  2:   65.7   3998
#>  3:   65.7   4105
#>  4:   68.1   4868
#>  5:   56.5   2565
#>  6:   63.1   3515
#>  7:   66.2   4029
#>  8:   48.2   1421
#>  9:   65.0   4112
#> 10:   67.9   4553
#> 11:   56.0   2465
#> 12:   61.3   2846
#> 13:   62.8   3466
#> 14:   63.1   3535
#> 15:   61.4   3429
#> 16:   70.0   4402
#> 17:   62.3   2944

reprex package (v2.0.1)

于 2021-12-16 创建

使用 ave.

dat[with(dat, as.logical(ave(as.numeric(Date), Transmitter, FUN=\(x) x == max(x)))), ]
#               Date    Transmitter Batch.location            Location.Receiver Length Weight
# 1085547 2019-11-14 A69-1602-59776      Den Oever         Den Oever Ijsselmeer   62.3   2944
# 629343  2019-11-17 A69-1602-59765      Medemblik  Medemblik Ijsselmeer, haven   61.4   3429
# 584846  2019-11-17 A69-1602-59760      Medemblik  Medemblik Ijsselmeer, haven   70.0   4402
# 679834  2019-11-18 A69-1602-59768      Medemblik Medemblik Ijsselmeer, gemaal   62.8   3466
# 803111  2019-11-18 A69-1602-59770      Den Oever          Stavoren Ijsselmeer   63.1   3535
# 586835  2019-11-19 A69-1602-59761      Medemblik  Medemblik Ijsselmeer, haven   56.0   2465
# 661232  2019-11-19 A69-1602-59767      Medemblik Medemblik Ijsselmeer, gemaal   61.3   2846
# 846636  2019-11-20 A69-1602-59772      Den Oever         Den Oever Ijsselmeer   62.5   3404
# 1209851 2019-11-20 A69-1602-59777      Den Oever         Den Oever Ijsselmeer   65.7   3998
# 934974  2019-11-20 A69-1602-59773      Den Oever         Den Oever Ijsselmeer   65.7   4105
# 984655  2019-11-20 A69-1602-59774      Den Oever         Den Oever Ijsselmeer   68.1   4868
# 552925  2019-11-20 A69-1602-59759      Medemblik Medemblik Ijsselmeer, gemaal   56.5   2565
# 746638  2019-11-20 A69-1602-59769      Den Oever         Den Oever Ijsselmeer   63.1   3515
# 1229866 2019-11-20 A69-1602-59778      Den Oever         Den Oever Ijsselmeer   66.2   4029
# 501088  2019-11-20 A69-1602-59756     Ketelhaven            Ramspol 1 (zuid)    48.2   1421
# 815912  2019-11-20 A69-1602-59771      Den Oever         Den Oever Ijsselmeer   65.0   4112
# 1020860 2019-11-20 A69-1602-59775      Den Oever         Den Oever Ijsselmeer   67.9   4553