[R] Need a factor level even though there are no observations
Ajay Narottam Shah
ajayshah at mayin.org
Sun May 8 15:56:55 CEST 2005
I'm in this situation:
factorlabels <- c("School", "College", "Beyond")
with data for 8 families:
education.man <- c(1,2,1,2,1,2,1,2) # Note : no "3" values
education.wife <- c(1,2,3,1,2,3,1,2) # 1,2,3 are all present.
My goal is to create this table:
School College Beyond
Husband 4 4 0
Wife 3 3 2
How do I do this?
I can readily do:
education.wife <- factor(education.wife, labels=factorlabels)
But this breaks:
education.man <- factor(education.man, labels=factorlabels)
because none of the families have a husband who went beyond college.
I get around this problem in a limited way by:
cautiously <- function(x, labels) {
factor(x, labels=factorlabels[as.numeric(levels(factor(x)))])
}
education.man <- cautiously(education.man, labels=factorlabels)
Now I get:
> table(education.man)
School College
4 4
> table(education.wife)
School College Beyond
3 3 2
This is a pain because now the two tables are not conformable. How do
I get to my end goal, which is the table:
School College Beyond
Husband 4 4 0
Wife 3 3 2
In other words, how do I force education.man to have a factor with 3
levels - "School" "College" "Beyond" - even though there is no
observation in "Beyond".
--
Ajay Shah Consultant
ajayshah at mayin.org Department of Economic Affairs
http://www.mayin.org/ajayshah Ministry of Finance, New Delhi
More information about the R-help
mailing list