[R] Use of apply rather than a loop

Dennis Fisher fisher at plessthan.com
Fri Dec 4 23:47:15 CET 2009


Colleagues,

R 2.9.0 on all platforms

I have a dataset that contains three columns of interest: ID's, serial  
elapsed times, and a marker.  Representative data:
Subject		Time		Marker
1			100.5		0
1			101			0
1			102			1
1			103			0
1			105			0

For each subject, I would like to find the time associated with MARKER  
== 1, then replace Time with Time - (Time[Marker == 1])
The result for this subject would be:
Subject		Time		Marker
1			-1.5			0
1			-1			0
1			0			1
1			1			0
1			3			0

One proviso: some subjects do not have Marker == 1; for these  
subjects, I would like Time to remain unchanged.

At present, I am looping over each subject.  The number of subjects is  
large so this process is quite slow.  I assume that one of the apply  
functions could speed this markedly but I am not facile with them.   
Any help would be appreciated.

Dennis

Dennis Fisher MD
P < (The "P Less Than" Company)
Phone: 1-866-PLessThan (1-866-753-7784)
Fax: 1-866-PLessThan (1-866-753-7784)
www.PLessThan.com




More information about the R-help mailing list