gsubfn is like gsub except instead of a replacement string it uses a
replacement function whose input is the string matched by the regular
expression and whose output replaces the match. The replacement
function can optionally be specified as a formula as we do here. If
there is no left hand side to the formula then the arguments are taken
to be the free variables in the right hand side of the formula, here
its just x. Finally we use sub to replace each comma with comma
space. See http://gsubfn.googlecode.com for more.
library(gsubfn)
levels(c1) <- gsubfn("\\d+", ~ sprintf("%03d", as.numeric(x)), levels(c1))
levels(c1) <- sub(",", ", ", levels(c1))
On Wed, Apr 21, 2010 at 10:24 AM, Jose Claudio Faria
<[email protected]> wrote:
> Dear list,
>
> I would like to format the result of the 'cut' function to perform a
> subsequent
> frequency distribution table (fdt) suitable for publications.
> Below an reproducible example:
>
> set.seed(1)
> x <- c(rnorm(1e3, mean=10, sd=1), 50, 100)
>
> start <- 0
> end <- 110
> h <-10
>
> c1 <- cut(x, br=seq(start, end, h), right=TRUE)
> levels(c1)
> # I get:
> # [1] "(0,10]" "(10,20]" "(20,30]" "(30,40]"
> # [5] "(40,50]" "(50,60]" "(60,70]" "(70,80]"
> # [9] "(80,90]" "(90,100]" "(100,110]"
>
> # I need (observe digits and space after the comma):
> # [1] "(000, 010]" "(010, 020]" "(020, 030]" "(030, 040]"
> # [5] "(040, 050]" "(050, 060]" "(060, 070]" "(070, 080]"
> # [9] "(080, 090]" "(090, 100]" "(100, 110]"
>
> c2 <- cut(x, br=seq(start, end, h), right=FALSE)
> levels(c2)
> # I get:
> # [1] "[0,10)" "[10,20)" "[20,30)" "[30,40)"
> # [5] "[40,50)" "[50,60)" "[60,70)" "[70,80)"
> # [9] "[80,90)" "[90,100)" "[100,110)"
>
> # I need (observe digits and space after the comma):
> # [1] "[000, 010)" "[010, 020)" "[020, 030)" "[030, 040)"
> # [5] "[040, 050)" "[050, 060)" "[060, 070)" "[070, 080)"
> # [9] "[080, 090)" "[090, 100)" "[100, 110)"
>
> # Making fdt:
> table(c1)
> # I get:
> # c1
> # (0,10] (10,20] (20,30] (30,40] (40,50] (50,60]
> # 518 482 0 0 1 0
> # (60,70] (70,80] (80,90] (90,100] (100,110]
> # 0 0 0 1 0
>
> # I need (observe digits and space after the comma):
> # c1
> # (000, 010] (010, 020] (020, 030] (030, 040] (040, 050] (050, 060]
> # 518 482 0 0
> 1 0
> # (060, 070] (070, 080] (080, 090] (090, 100] (100, 110]
> # 0 0 0 1
> 0
>
> table(c2)
> # I get:
> # c2
> # [0,10) [10,20) [20,30) [30,40) [40,50) [50,60)
> # 518 482 0 0 0 1
> # [60,70) [70,80) [80,90) [90,100) [100,110)
> # 0 0 0 0 1
>
> # I need (observe digits and space after the comma):
> # c2
> # [000, 010) [010, 020) [020, 030) [030, 040) [040, 050) [050, 060)
> # 518 482 0 0
> 0 1
> # [060, 070) [070, 080) [080, 090) [090, 100) [100, 110)
> # 0 0 0 0
> 1
>
>
> Is it possible? Any tip will be welcome!
>
> Thanks in advance,
> --
> ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
> Jose Claudio Faria
> Estatistica - prof. Titular
> UESC/DCET/Brasil
> [email protected]
> ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
>
> ______________________________________________
> [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
> and provide commented, minimal, self-contained, reproducible code.
>
______________________________________________
[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
and provide commented, minimal, self-contained, reproducible code.