Wang, Kevin (SYD)
2010-Jul-13 06:52 UTC
[R] Equivalent of SAS's FIRST. And LAST. Variable in R?
Hi all, I'm just wondering if there is a equivalent of SAS's FIRST. and LAST. variables in R? For example, suppose this is a snapshot of the data: ClientCode CaseCode open close Important 1 37 28 2003-07-08 2003-09-02 1 2 37 310 2003-11-01 2004-09-10 1 3 37 1562 2007-04-03 2007-07-27 1 4 38 29 2003-02-28 2007-09-05 1 5 38 599 2004-07-14 2007-10-31 1 For each client, I want to see that if a case is important (Important 1), then check its close date and the next open-date for the client. E.g. for Client 37, I want to get the difference between Case 310's open date and Case 28's close date, as well as find out whether Case 310 is "Important". I know how to get this using SAS's DATA step (with BY statement and FIRST. variable). But I'm having trouble finding the equivalent in R. Any suggestions will be greatly appreciated! Cheers, Kevin Kevin Wang Senior Adviser, Government Advisory Services Advisory KPMG 10 Shelley Street Sydney NSW 2000 Australia Tel +61 2 9335 8282 Fax +61 2 9335 7001 Mob 0404 518 301 kevinwang@kpmg.com.au <mailto:kevinwang@kpmg.com.au > kpmg.com.au <http://kpmg.com.au/> Best Accounting Firm - BRW Client Choice Awards 2010 Protect the environment: please think before you print [[alternative HTML version deleted]]
Hi, I expect there are better ways of doing this then the following, but you can probably get the same sort of thing using the split command bb matrix(c(1,1,1,2,2,2,3,3,3,3,10,11,12,43,23,14,52,52,12,23),ncol=2,byrow =FALSE) aa = split(bb,bb[,1]) sapply(aa,function(temp) {cc = matrix(temp,ncol=ncol(bb));cc[nrow(cc),2] - cc[1,2]}) where the first column of bb is the "ClientCode" the sapply gives the difference in the second column of bb between the "last" and "first" value for each client Martyn -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Wang, Kevin (SYD) Sent: 13 July 2010 07:52 To: r-help at r-project.org Cc: Wang, Kevin (SYD); wang.kevin at gmail.com Subject: [R] Equivalent of SAS's FIRST. And LAST. Variable in R? Hi all, I'm just wondering if there is a equivalent of SAS's FIRST. and LAST. variables in R? For example, suppose this is a snapshot of the data: ClientCode CaseCode open close Important 1 37 28 2003-07-08 2003-09-02 1 2 37 310 2003-11-01 2004-09-10 1 3 37 1562 2007-04-03 2007-07-27 1 4 38 29 2003-02-28 2007-09-05 1 5 38 599 2004-07-14 2007-10-31 1 For each client, I want to see that if a case is important (Important 1), then check its close date and the next open-date for the client. E.g. for Client 37, I want to get the difference between Case 310's open date and Case 28's close date, as well as find out whether Case 310 is "Important". I know how to get this using SAS's DATA step (with BY statement and FIRST. variable). But I'm having trouble finding the equivalent in R. Any suggestions will be greatly appreciated! Cheers, Kevin Kevin Wang Senior Adviser, Government Advisory Services Advisory KPMG 10 Shelley Street Sydney NSW 2000 Australia Tel +61 2 9335 8282 Fax +61 2 9335 7001 Mob 0404 518 301 kevinwang at kpmg.com.au <mailto:kevinwang at kpmg.com.au > kpmg.com.au <http://kpmg.com.au/> Best Accounting Firm - BRW Client Choice Awards 2010 Protect the environment: please think before you print [[alternative HTML version deleted]] ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ________________________________________________________________________ This e-mail has been scanned for all viruses by Star.\ _...{{dropped:12}}