作者kakaman (日子過的真快阿)
看板R_Language
標題[問題]資料排序後,如何選取相同key值的第1筆
時間Sun Jul 7 23:41:03 2019
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
以往都是用excel作資料分析,僅處理數萬筆資料
但近期因要驗證廠商程式開發之正確性,需對數百萬筆甚至千萬筆以上資料進行通盤驗證
故開始學習R
想請問站內大大有關資料排序後,怎麼選取相同KEY值之第1筆資料
[程式範例]:
Data frame舉例如下
PID 所在地 辦理日期 KEY
AA 臺北 4/1 AA臺北
AA 臺北 4/15 AA臺北
AA 臺北 7/10 AA臺北
BB 臺中 5/1 BB臺中
BB 臺中 6/10 BB臺中
BB 臺中 7/16 BB臺中
BB 臺中 8/20 BB臺中
... ... ... ...
僅想選取AA 4/1
BB 5/1等同KEY下辦理日期第1筆資料進行分析
想請問站內大大可否提供些許資訊供參考
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.212.49 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1562514065.A.A5D.html
1F:推 bboybighead2: group_by + arrange + slice 07/08 00:51
2F:→ a78998042a: key_type_num = length(unique(your_data$KEY)) 07/08 01:41
3F:→ a78998042a: use_index = cumsum(c(0, table(your_data$KEY)))+1 07/08 01:41
4F:→ a78998042a: your_data[use_index[1:key_type_num], ] 07/08 01:41
5F:→ a78998042a: or 07/08 01:42
6F:→ a78998042a: result = lapply(split(your_data, your_data$KEY), 07/08 01:42
7F:→ a78998042a: function(x)head(x, 1)) 07/08 01:42
8F:→ a78998042a: do.call(rbind, result) 07/08 01:42
9F:→ a78998042a: or your_data[!duplicated(your_data$KEY), ] 07/08 01:48
10F:→ andrew43: data.frame用split+do.call,data.table直接上 07/08 02:14
12F:→ andrew43: 日期可預先處理並排序會比較穩當。 07/08 02:16