Reputation: 763
I generally like R, but the type conversion issues are driving me crazy.
Following issue:
I read a data frame from a database connection. The result is a data frame with character columns.
I know that the first column is a date format - all the others are numeric. However, no matter how I tried to convert the character columns of the data frame into the correct types, it didn't work out.
Upon conversion of the data frame into a matrix and then back into a data frame, all columns became type factor - and casting factors into numerics created wrong results cause the indices of the factor levels were converted instead of the real values.
Moreover, if the table is big in size - I do not want to convert each column manually. Isn't there a way to get this done automatically?
Upvotes: 1
Views: 1503
Reputation: 886948
We can use type.convert
by looping over the columns of the dataset with lapply
. Convert the columns to character
and apply the type.convert
. If it is is a character
class, it will convert to factor
which we can reconvert it to Date
class (as there is only a single column with character
class. It is not sure about the format of the 'Date' class, so in case it is a different format, specify the format
argument in as.Date
).
df1[] <- lapply(df1, function(x) {x1 <- type.convert(as.character(x))
if(is.factor(x1))
as.Date(x1) else x1})
Upvotes: 1