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

Deepthi Theresa deepthitheresa at gmail.com
Sat Nov 7 00:54:39 CET 2015


Hello Duncan,

Thank you.

I completed the task using the exact way you described here.  Changed the
data frame in to a character type using apply function and complicated the
task.

Thanks,
Deepthi
On Nov 6, 2015 4:44 PM, "Duncan Murdoch" <murdoch.duncan at gmail.com> wrote:

> 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
>
>     x
> 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
>
>     y
> 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
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list