On Tue, 2005-07-26 at 15:48 -0400, [EMAIL PROTECTED] wrote:
> Hi,
>
> I am looking for an elegant way to transform a vector into percentages of
> values
> that meet certain criteria.
>
> store<-c(1,1.4,3,1.1,0.3,0.6,4,5)
>
> # now I want to get the precentages of values
> # that fall into the categories <=M , >M & <=N , >N
> # let
> M <-.8
> N <- 1.2
> # In my real example I have many more of these cutoff-points
>
> # What I did is:
>
> out <- matrix(NA,1,3)
>
> out[1,1] <- ( (sum(store<=M )) /length(store) )*100
> out[1,2] <- ( (sum(store> M & store<= N )) /length(store) )*100
> out[1,3] <- ( (sum(store> N )) /length(store) )*100
>
> colnames(out)<-c("percent<=M","percent>M & <=N","percent>N")
> out
>
> But this gets very tedious if I have many cutoff-points. Does anybody know a
> more elegant way to do this task?
>
> Thanks so much.
>
> Cheers,
> Jens
Something alone the lines of:
store <- c(1, 1.4, 3, 1.1, 0.3, 0.6, 4, 5)
M <- 0.8
N <- 1.2
x <- hist(store, br = c(min(store), M, N, max(store)),
plot = FALSE)$counts
pct.x <- prop.table(x) * 100
names(pct.x) <- c("percent <= M","percent > M & <= N","percent > N")
> pct.x
percent <= M percent > M & <= N percent > N
25 25 50
I think that should do it. See ?hist for more information and take note
of the 'include.lowest' and 'right' arguments relative to whether or not
values are or are not included in the specified intervals.
See ?prop.table as well.
Also be acutely aware of potential problems with exact equality
comparisons with floating point numbers and the break points...if you
have a float value equal to a breakpoint in your vector.
HTH,
Marc Schwartz
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html