[R] Dataframes - Integer and decimal in same column?

Duncan Murdoch murdoch.duncan at gmail.com
Sat Nov 7 00:44:52 CET 2015

On 06/11/2015 3:26 PM, Deepthi Theresa wrote:
> Hi all,
> My question is about R dataframes. I am making html reports using R
> datframe tables and RMarkdown.
> I have a dataframe with integer values on it and I had to rbind another
> dataframe with decimal values with the first dataframe.
> After the rbind function all values changed to decimal values.  Can we keep
> integer and decimal numbers in the same column?  Or at least round some of
> the decimal rows to zero decimal point.  anything works.  I just want to
> show the integer rows as integer values and decimal rows as decimal
> values.

There are two issues here.

There is the type of the value, and the format for displaying it.

You can't mix integer type data and floating point data in the same 
column.  The integer values will be converted to floating point.

R by default displays floating point values with the same number of 
decimal places throughout the column, so data.frame(x = c(1, 1.1)) will 
display as

1 1.0
2 1.1

and I think this is what you want to avoid.  There are a few ways to do 
this, but the easiest is to convert the column to character using 
whatever format you want, e.g.

data.frame(y = c(as.character(1), as.character(1.1)))

will display as

1   1
2 1.1

If the numbers are already in the same column, you could do it as

data.frame(z = sprintf("%g", c(1, 1.1)))

Duncan Murdoch

More information about the R-help mailing list