library(data.table)
library(magrittr)

# 讀資料
dt <- fread(
  "
PID    所在地   辦理日期  KEY
BB     臺中     6/10      BB臺中
AA     臺北     7/10      AA臺北
BB     臺中     5/1       BB臺中
AA     臺北     4/15      AA臺北
AA     臺北     4/1       AA臺北
BB     臺中     8/20      BB臺中
BB     臺中     7/16      BB臺中
  "
) %>%
  as.data.frame
# 留意到我故意把順序打亂

#### data.frame的做法
dt1 <- dt
dt1$辦理日期.1 <- as.Date(dt$辦理日期, format = "%m/%d")
# 建新欄位叫辦理日期.1並成為日期物件
dt1 %>%
  .[order(.$KEY, .$辦理日期.1),] %>% # 先按KEY與辦理日期.1排序
  split(., .$KEY) %>%                 # 按KEY切開成list
  lapply(., function(x)
    x[1, ]) %>%     # 取出每個元素的第1列
  do.call("rbind", .)                 # 元素間rbind
#        PID 所在地 辦理日期    KEY 辦理日期.1
# AA臺北  AA   臺北      4/1 AA臺北 2019-04-01
# BB臺中  BB   臺中      5/1 BB臺中 2019-05-01

##### data.table 做法
dt2 <- dt %>% as.data.table
dt2[,  辦理日期.1 :=
      as.Date(辦理日期, format = "%m/%d")] %>% # 令辦理日期.1為日期物件
  .[order(辦理日期.1), .SD[1], by = "KEY"]     # 按辦理日期排序後
#       KEY PID 所在地 辦理日期 辦理日期.1
# 1: AA臺北  AA   臺北      4/1 2019-04-01
# 2: BB臺中  BB   臺中      5/1 2019-05-01
