Thanks, Prof Spector. Your first solution works well for me.
Phil Spector wrote:
David -
Here's the easiest way I've been able to come up with. I'll provide
some sample data to make things clearer (hint, hint):
dat = data.frame(matrix(rnorm(100),20,5))
dat[3,4] = NA
dat[12,3] = NA
scrs = factanal(na.omit(dat),factors=2,scores='regression')$scores
rownames(scrs) = rownames(na.omit(dat))
newdat = merge(dat,scrs,by=0,all.x=TRUE,sort=FALSE)
This will result in the observations with missing values being
at the end of the data frame. If you want the original order
(assuming default row names), you could use
newdat[order(as.numeric(newdat$Row.names)),]
A somewhat more complicated approach is, in some sense, more direct:
dat$Factor1 = NA
dat$Factor2 = NA
dat[rownames(na.omit(dat[,-c(6,7)])),c('Factor1','Factor2')] =
+
factanal(na.omit(dat[,-c(6,7)]),factors=2,scores='regression')$scores
The order of the data is preserved.
- Phil Spector
Statistical Computing Facility
Department of Statistics
UC Berkeley
spec...@stat.berkeley.edu
On Tue, 25 Aug 2009, David G. Tully wrote:
I am sure there is a simple way to do the following, but i haven't
been able to find it. I am hoping a merciful soul on R-help could
point me in the right direction.
I am doing a factor analysis on survey data with missing values. to
do this, I run:
FA1<-factanal(na.omit(DATA), factors = X, rotation = 'oblimin',
scores = 'regression')
Now that I have my factors and factor scores, I want to add those
scores back to my original dataset so I can plot factor scores by
demographics. However, when I try to add the scores back to the
original data frame, the variables are of different lengths.
Is there a way to subset from my original data set that will work
with factanal() and preserve the original rows or that will allow me
to append the factor scores back onto the original dataset with the
proper rows and NAs where there could be no data?
Again, I apologize if I am missing something basic. I am a self
taught R user and couldn't find an answer to this question.
Thanks in advance,
David
______________________________________________
R-help@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.
______________________________________________
R-help@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.