[R] Help: formatting the result of 'cut' function

Jose Claudio Faria joseclaudio.faria at gmail.com
Wed Apr 21 16:24:17 CEST 2010


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
joseclaudio.faria at gmail.com
///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\



More information about the R-help mailing list