Re: [R] Calculating SD according to groups of rows

From: Dieter Menne <>
Date: Thu, 20 Nov 2008 08:20:36 +0000 (UTC)

pufftissue pufftissue <pufftissue <at>> writes:

> What I am getting is indeed:
> 7200 23955 34563 8934
> 16.39977 10.03896 11.234 14.02
> I'd like the final output to be:
> subject_id hr_Stand_Deviation
> 7200 16.39977
> 23955 10.03896
> 34563 11.234
> 8934 14.02

The hard way could go like that; I personally got used to it, but I admit it is one of the thinks that are unusually difficult in R.

dat = data.frame(SUBJECT_ID=sample(letters[1:5],100,TRUE),HR=rnorm(100)) sd.list = with(dat, tapply(HR, SUBJECT_ID, sd)) data.frame(SUBJECT_ID=rownames(sd.list),sd=sd.list)

I think Hadley Wickham tried to make life easier with the plyr package, so I thought something like the below would work out of the box. However, there must be something wrong with the syntax, the result is only "approximately" correct.


ddply(dat,.(SUBJECT_ID),sd) mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Thu 20 Nov 2008 - 08:23:13 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 20 Nov 2008 - 13:30:26 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive