# [R] prevent conversion to factors in aggregate?

Spencer Graves spencer.graves at pdf.com
Sun Nov 16 04:33:38 CET 2003

```I don't know how to prevent aggregate from making factors of everything,
but the following shows how to cast them back into what you want:

> DF1 <- data.frame(a=1:9, b=rep(letters[1:3], 3), d=rep(1:3, each=3))
>
> DF. <- aggregate(DF1\$a, by=list(b=DF1\$b, d=DF1\$d), FUN=sum)
> sapply(DF., class)
b         d         x
"factor"  "factor" "integer"
>
> DF.\$bch <- as.character(DF.\$b)
> DF.\$dn <- as.numeric(as.character(DF.\$d))
> sapply(DF., class)
b           d           x         bch          dn
"factor"    "factor"   "integer" "character"   "numeric"

How's this?  I just got this same result from S-Plus 6.1 and R 1.8.0.
spencer graves

Jeff D. Hamann wrote:

>I've been trying to figure out how to prevent a column that is the result of
>an aggregate function call so that I can use it in further calculations. For
>example, I would like to aggregate the expf for the data.frame by sp
>(character) and dbh (double d=rounded to integer) using the command:
>
>
>
>
>>st2 <- aggregate( ntrs\$expf, by=list(sp=ntrs\$sp,dbh=ntrs\$dbh), sum )
>>st2\$expf <- st2\$x / 20
>>st2\$basal.area <- st2\$dbh^2 * st2\$expf
>>
>>
>Warning message:
>"^" not meaningful for factors in: Ops.factor(st2\$dbh, 2)
>
>
>
>attributes(st2\$dbh) tell me the class is a factor. I would like to values to
>remain AsIs but cannot seem to figure out how to tell aggregate how to do
>that, or even handle the operation after the fact by converting or adding an
>extra column to the resulting data.frame.
>
>I've tried using I() with no luck
>
>
>
>>st2 <- aggregate( ntrs\$expf, by=list(sp=ntrs\$sp,dbh=I(ntrs\$dbh)), sum )
>>
>>
>
>How can/do I "cast" the dbh factor into an integer in the data.frame?
>
>Thanks,
>Jeff.
>
>---
>Jeff D. Hamann
>Forest Informatics, Inc.
>PO Box 1421
>Corvallis, Oregon USA 97339-1421
>(office) 541-754-1428
>(cell) 541-740-5988
>jeff.hamann at forestinformatics.com
>www.forestinformatics.com
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
>

```