Min-Woong you could use convert, it works with NAs and you still get an 
error for free if conversion is not possible:

julia> df = DataFrame(x = @data [1,2,3, NA, typemax(Int8)])
5x1 DataFrames.DataFrame
| Row | x   |
|-----|-----|
| 1   | 1   |
| 2   | 2   |
| 3   | 3   |
| 4   | NA  |
| 5   | 127 |

julia> eltype(df[:x])
Int64

julia> df[:x] = convert(DataArray{Int8, 1}, df[:x]);

julia> eltype(df[:x])
Int8

julia> df = DataFrame(x = @data [1,2,3, NA, typemax(Int8) + 1])
5x1 DataFrames.DataFrame
| Row | x   |
|-----|-----|
| 1   | 1   |
| 2   | 2   |
| 3   | 3   |
| 4   | NA  |
| 5   | 128 |

julia> eltype(df[:x])
Int64

julia> df[:x] = convert(DataArray{Int8, 1}, df[:x]);
ERROR: InexactError()
 in copy! at abstractarray.jl:302



El jueves, 24 de diciembre de 2015, 5:02:14 (UTC-6), Min-Woong Sohn 
escribió:
>
> I want to reduce the amount of memory used by a dataframe that has lots of 
> binary variables. What is the best way to achieve this? For example, how 
> can I convert a variable from Int64 to Int8 in a dataframe.
>
> Thanks
>

Reply via email to