作者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/cn.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