as.numeric
, кажется, форматирует все значения, чтобы занять наибольшее количество десятичных разрядов, найденных в векторе. Есть ли способ вернуть числовой вектор из факторного вектора, который сохраняет количество десятичных разрядов, которое изначально имело каждое значение?
vals <- factor(c('1', '1.1', '1.11', '1.111'))
as.numeric(as.character(vals))
# [1] 1.000 1.100 1.110 1.111 # every value has 3 decimal places
Желаемый вывод (в виде числового вектора, а не фактора!):
# [1] 1 1.1 1.11 1.111 # every value has conserved the original number of decimal places
Зачем мне это нужно?
Отображение длинного кадра данных с переменными value
и measurement
. В столбце measurement
находятся две отдельные категории измерений (например, weight
, height
). Категории измерений могут иметь свои собственные единицы измерения и количество значащих цифр. Поэтому, если weight
имеет значение до одного десятичного знака, а height
имеет значение до двух десятичных знаков, было бы неверно указывать значение weight
как 1.10
- это должно быть 1.1
.