Skip to content

spliting an integer

7 messages · Dimitri Szerman, Anne Hertel, Sundar Dorai-Raj +4 more

#
Hi Dimitri,

You could write
[1]  1 12  8
[1] 1999 2000 1997

And there you have it.

Cheers,
Anne Hertel


On Thu, 20 Oct 2005 17:40:10 -0200
"Dimitri Szerman" <dimitrijoe at ipea.gov.br> wrote:
------------------------------------------------------------
Anne M. K. Hertel
Grad. Student & Research Assistant
Department of Atmospheric Sciences
University of Illinois at Urbana-Champaign
Annex II, room 204
Phone: (217) 333 6296
#
Dimitri Szerman wrote:
Try:

X <- c(11999, 122000, 81997)
Y <- X %/% 10000
Z <- X - Y * 10000

See ?Arithmetic for more details.

HTH,

--sundar
#
On 10/20/05, Dimitri Szerman <dimitrijoe at ipea.gov.br> wrote:
Some possibilities:

1. Use integer division and remainder (probably best solution):

	Y <- X %/% 10000
	Z <- X %% 10000

2. Convert to character and reduce to desired field:

	Y <- as.numeric(sub("....$", "", X))
	Z <- as.numeric(sub(".*(....)$", "\\1", X))

3. Insert a space between the two sets and read them in:

	read.table(textConnection(sub("(....)$", " \\1", X)),
		col.names = c("Y", "Z"))

4. Use encode at:

http://www.wiwi.uni-bielefeld.de/~wolf/software/R-wtools/decodeencode/decodeencode.rev

	encode(X, c(100, 10000))
#
Hint: 11999 = 11999%%1e4 + 1e4*(11999%/%1e4)

-- Bert Gunter
Genentech Non-Clinical Statistics
South San Francisco, CA
 
"The business of the statistician is to catalyze the scientific learning
process."  - George E. P. Box
#
"Anne Hertel" <ahertel at atmos.uiuc.edu> writes:
Er, we do have integer divide and remainder operators:
[1] 1999 2000 1997
[1]  1 12  8

  
    
#
Dear Sundar and Dimitri,
Or even
[1] 1999 2000 1997

Regards,
 John