[R] Count factor if
Dimitris Rizopoulos
d.rizopoulos at erasmusmc.nl
Thu Feb 17 13:44:17 CET 2011
try this:
x <- factor(c('a','a','a','a','a','b','b','b','c','d','d','d'))
y <- c(1,3,6,8,8,3,4,7,5,6,7,10)
X <- data.frame(x, y)
cbind(X, z = ave(X$y, X$x,
FUN = function (x) match(x, unique(x)) - 1))
I hope it helps.
Best,
Dimitris
On 2/17/2011 11:15 AM, mathijsdevaan wrote:
>
>> Here is a method that works despite generating a warning:
>> cbind(X, z = ave(X$y, X$x, FUN = seq) - 1)
>>
>> David Winsemius, MD
>> West Hartford, CT
>
> I was happy a bit too early. There's still an error:
>
> x<-as.factor(c('a','a','a','a','a','b','b','b','c','d','d','d'))
> y<-c(1,3,6,8,8,3,4,7,5,6,7,10)
> X<-data.frame(x,y)
> X
> x y
> 1 a 1
> 2 a 3
> 3 a 6
> 4 a 8
> 5 a 8
> 6 b 3
> 7 b 4
> 8 b 7
> 9 c 5
> 10 d 6
> 11 d 7
> 12 d 10
>
> cbind(X, z = ave(X$y, X$x, FUN = seq) - 1)
>
> x y z
> 1 a 1 0
> 2 a 3 1
> 3 a 6 2
> 4 a 8 3
> 5 a 8 4
> 6 b 3 0
> 7 b 4 1
> 8 b 7 2
> 9 c 5 0
> 10 d 6 0
> 11 d 7 1
> 12 d 10 2
>
> Using this function provides a value of 4 in row 5, column c, while it
> should be 3. Is there another way I can solve my problem? Thanks!
>
> M
--
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus University Medical Center
Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014
Web: http://www.erasmusmc.nl/biostatistiek/
More information about the R-help
mailing list