[R] Levels of a factor
David Carlson
dcarlson at tamu.edu
Wed Jul 24 20:51:50 CEST 2013
Benchmark is probably a subset from a larger dataframe. R does
not automatically remove empty levels but you can do it:
set.seed(42)
dataset <- data.frame(Benchmark=factor(sample(LETTERS[1:26],
50,
replace=TRUE), levels=LETTERS[1:26]))
levels(dataset$Benchmark)
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N"
"O" "P" "Q" "R" "S"
# [20] "T" "U" "V" "W" "X" "Y" "Z"
dataset$Benchmark <- factor(dataset$Benchmark)
levels(dataset$Benchmark)
# [1] "A" "C" "D" "F" "G" "H" "J" "K" "L" "M" "N" "O" "P" "Q"
"R" "S" "T" "V" "X"
# [20] "Y" "Z"
There are times when you want to know if certain factor levels
do not appear in a subset of the original data.
-------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77840-4352
----Original Message-----
From: r-help-bounces at r-project.org
[mailto:r-help-bounces at r-project.org] On Behalf Of Borja
Rivier
Sent: Wednesday, July 24, 2013 8:25 AM
To: r-help at r-project.org
Subject: [R] Levels of a factor
Hi all,
I am having a bit of trouble using the levels() function.
I have a factor with many elements, and when I use the
function levels() to
extract the list of unique elements, some of the elements
returned are not
actually in the factor.
For example I would have this:
> vector <- dataset$Benchmark
> class(vector)
[1] "factor"
> length(vector)
[1] 35615
> vector2 <- levels(vector)
> length(which(!(vector2 %in% vector)))
[1] 235
Does anyone know how this is possible?
Many thanks!
Borja
[[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.
More information about the R-help
mailing list