Java Mailing List Archive

http://www.r-help.com/

Home » Home (12/2007) » R Help for Statistical Computing »

Re: [R] Question about creating unique factor labels with the
 factor  function

Petr Pikal

2005-07-20

Replies:

Hallo

I am not sure what you want to achieve.

your factor has 3 levels but with only 2 different labels

> hb
[1] 1 1 1 1 1 1 2 2 2
Levels: 1 1 2

but

> str(hb)
Factor w/ 3 levels "1","1","2": 1 1 1 2 2 2 3 3 3

so you gave only one label to level 1 and 2. You can give the same
label to any level you choose but I can not see a reason in it.

> hb <- factor(c(1,1,1,2,2,2,3,3,3),
levels=c(1,2,3),labels=c(1,1,1))
> hb
[1] 1 1 1 1 1 1 1 1 1
Levels: 1 1 1

or

> hb <- factor(c(1,1,1,2,2,2,3,3,3),
levels=c(1,2,3),labels=c(3,100,100))
> hb
[1] 3  3  3  100 100 100 100 100 100
Levels: 3 100 100
> str(hb)
Factor w/ 3 levels "3","100","100": 1 1 1 2 2 2 3 3 3
-------------------------------------------------------------------------
but surprising for me is an ordered behaviour which I find a bit
odd.

> hb
[1] 3  3  3  100 100 100 100 100 100
Levels: 3 100 100

> ordered(hb)
[1] 3  3  3  100 100 100 100 100 100
Levels: 3 < 100 < 100

> str(hb)
Factor w/ 3 levels "3","100","100": 1 1 1 2 2 2 3 3 3

> str(ordered(hb))
Ord.factor w/ 3 levels "3"<"100"<"100": 1 1 1 2 2 2 2 2 2

> unique((hb))
[1] 3  100 100    #three levels and three values
Levels: 3 100 100

> unique(ordered(hb))
[1] 3  100    # three levels but only 2 values?
Levels: 3 < 100 < 100
*************************************************
Can anybody explain why unique(ordered()) results in only 2
displayed levels although this

> str(unique(ordered(hb)))
Ord.factor w/ 3 levels "3"<"100"<"100": 1 2

says that the factor still have 3 levels?

Best regards
Petr




On 19 Jul 2005 at 15:11, Gregory Gentlemen wrote:

> Hi guys,
>
> I ran into a problem of not being able to create unique labels when
> creating a factor. Consider an example below:
>
> hb <- factor(c(1,1,1,2,2,2,3,3,3), levels=c(1,2,3),labels=c(1,1,2)) >
> hb [1] 1 1 1 1 1 1 2 2 2 Levels: 1 1 2
> unique(hb) [1] 1 1 2 Levels:
> 1 1 2
>
> How come there are three unique levels, I thought this would only
> create one unique level?
>
> > unique(as.ordered(hb))
> [1] 1 2
> Levels: 1 < 1 < 2
>
> Is as.ordered the only solution?
>
> Thanks in advance,
> Greg
>
>
> __________________________________________________
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@(protected)
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html

Petr Pikal
petr.pikal@(protected)

______________________________________________
R-help@(protected)
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
©2008 r-help.com - Jax Systems, LLC, U.S.A.