Skip to content
Back to formatted view

Raw Message

Message-ID: <8196661B-256A-4E87-8296-D245E717DDE8@uni-bremen.de>
Date: 2009-11-29T15:41:36Z
From: Karsten Wolf
Subject: How to z-standardize for subgroups?

Hi folks,
I have a dataframe df.vars with the follwing structure:


var1   var2   var3   group

Group is a factor.

Now I want to standardize the vars 1-3 (actually - there are many  
more) by class, so I define

z.mean.sd <- function(data){
	return.values <- (data  - mean(data)) / (sd(data))
	return(return.values)
}

now I can call for each var

z.var1 <- by(df.vars$var1, group, z.mean.sd)

which gives me the standardised data for each subgroup in a list with  
the subgroups

z.var1 <- unlist(z.var1)

then gives me the z-standardised data for var1 in one vector. Great!

Now I would like to do this for the whole dataframe, but probably I am  
not thinking vectorwise enough.

z.df.vars <- by(df.vars, group, z.mean.sd)

does not work. I banged my head on other solutions trying out sapply  
and tapply, but did not succeed. Do I need to loop and put everything  
together by hand? But I want to keep the columnnames in the vector?

-karsten


---------------------------------------------------------------------------------------------
Karsten D. Wolf
Didactical Design of Interactive
Learning Environments
Universit?t Bremen - Fachbereich 12
web: http://www.ifeb.uni-bremen.de/wolf/