[datatable-help] Conditional replacement using a single line

Frank S. f_j_rod at hotmail.com
Tue Aug 25 18:17:09 CEST 2015


Hello everyone,
I ask a question directly linked with other question which I was answered in this list a year ago. Let the data table be:
DT <- data.table(obs=1:7, id=c(1,1,1,4,4,4,4), time=c(3,4,7,5,8,10,15))
 
Now I add a new column, called "value", which contains all zeros except the first observation within each "id" group, which is equal to 2. 
One possible solution I was given is the following two code lines:
> DT[ , value:=0]
> DT[!duplicated(id), value:=2]
 
But I wonder if it is possible to do the same ON A SINGLE CODE LINE. I have tried different options but they doesn't work:
1) DT[ , value:= c(0, 2), by=id]
2) DT[ , value:= ifelse( DT[!duplicated(id)]==T, 2, 0), by=id]
 
Many thanks!
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/datatable-help/attachments/20150825/ce034c63/attachment.html>


More information about the datatable-help mailing list