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
。