将因子向量转换为数值,同时保留可变的小数位

时间:2019-10-17 20:52:39

标签: r

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

我为什么要这个?

想象一个长数据帧,其中包含valuemeasurement变量。在measurement列中有两个单独的测量类别(例如weightheight)。度量类别可以具有自己的单位和有效数字的数量。因此,如果weight到小数点后一位有效,而height到小数点后两位有效,那么将weight的值列为1.10将会是不准确的。应该是1.1

0 个答案:

没有答案