[R] adding factor scores back to an incomplete dataset...
David G. Tully
d-tully at u.northwestern.edu
Sat Aug 29 01:30:09 CEST 2009
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
> spector at 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 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