Как преобразовать весь массив данных в числовое, сохраняя при этом десятичные дроби?
У меня есть смешанный класс данных (числовой и факторный), где я пытаюсь преобразовать весь кадр данных в числовой. Следующее иллюстрирует тип данных, с которыми я работаю, а также проблему, с которой я сталкиваюсь:
> a = as.factor(c(0.01,0.02,0.03,0.04))
> b = c(2,4,5,7)
> df1 = data.frame(a,b)
> class(df1$a)
[1] "factor"
> class(df1$b)
[1] "numeric"
Когда я пытаюсь преобразовать весь фрейм данных в числовой, он изменяет числовые значения. Например:
> df2 = as.data.frame(sapply(df1, as.numeric))
> class(df2$a)
[1] "numeric"
> df2
a b
1 1 2
2 2 4
3 3 5
4 4 7
Предыдущие сообщения на этом сайте предлагают использоватьas.numeric(as.character(df1$a))
, который прекрасно работает для одного столбца. Однако мне нужно применить этот подход к фрейму данных, который может содержать сотни столбцов.
Каковы мои варианты для преобразования целого кадра данных из фактора в числовое, сохраняя при этом числовые десятичные значения?
Ниже приведен вывод, который я хотел бы получить гдеa
а такжеb
являются числовыми:
a b
1 0.01 2
2 0.02 4
3 0.03 5
4 0.04 7
Я прочитал следующие связанные посты, хотя ни один из них не относится непосредственно к этому делу:
Как преобразовать факторную переменную в числовую при сохранении чисел в R Это ссылается на один столбец в кадре данных.преобразование из символа в числовой фрейм данных, Этот пост не учитывает десятичные значения.Как я могу преобразовать столбец фактора, который содержит десятичные числа в числовые?, Это относится только к одному столбцу во фрейме данных.