[R] Including only a subset of the levels of a factor XXXX
David Winsemius
dwinsemius at comcast.net
Thu Sep 1 21:29:05 CEST 2011
On Sep 1, 2011, at 2:59 PM, Dan Abner wrote:
> Hello everyone,
>
> I have the following factor:
>
> levels(pp_income)
> [1] "" "1" "2" "3" "4" "5" "6" "7"
> [9] "8" "9" "Renter"
>
> I want to subset so that only values 1:9 are included. I have the
> following:
>
>> income<-pp_income[pp_income %in% c(1:9)]
>>
>> levels(income)
> [1] "" "1" "2" "3" "4" "5" "6" "7"
> [9] "8" "9" "Renter"
>
> Why is this not working
Actually it could be that it did succeed but you just have levels
attributes that are unpopulated in your result. Try:
table{income)
If that looks correct, then do this:
income <- factor(income) # will drop unused levels
> and can someone please suggest a solution?
If on the other hand you got the wrong values then there was an
undesired coercion of either 'factor' class to 'numeric' or of
'numeric' to 'character'. I am fairly sure this will remove any
ambiguity:
income<-pp_income[as.character(pp_income)
%in% as.character(1:9)]
(You would still get the puzzling extra levels if you looked with
levels(income).)
>
> Thank you!
>
> Dan
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list