我正在使用数据表,该数据表的结果列以字符值(chr
)开头。因为我需要使用其中一些值进行数学计算,所以我会复制原始列,但将非数值的值更改为特定的数值。例如,我使用-999表示结果值为" *未报告"并为非数字字符设置类似的替换值。其他收集的值是诸如7.3或238之类的数字。结果值根据收集中使用的工具和报告的特征而变化。
以下是数据表dt
的一小部分示例(不包括其他列)。
RESULT_VALUE RESULT_TRANSLATED
43.2 43.2000
*Not reported -999.00000
0.19 0.19000
0.058 0.05800
使用RESULT_TRANSLATED
转换dt$RESULT_TRANSLATED <- as.numeric(as.character(dt$RESULT_VALUE))
值。
scipen
和digits
的选项值分别为0和7。
scipen
设置为0以强制一列位置标识符(上面未显示的单独列)显示为非科学数字(例如23434 vs 2.3434e04)。 Digits
设置为7,可以显示已记录的字段数据,而不会截断值或减少其有效数字。
我希望看到的是这些转化的结果:
RESULT_VALUE RESULT_TRANSLATED
43.2 43.2
*Not reported -999
0.19 0.19
0.058 0.058
此处,翻译后的数据反映了结果的重要数据与不存在的增加准确度。因此,0.058等值不表示0.05800或0.19的测量值并不意味着0.19000。
不幸的是,它出现了我不能拥有我的蛋糕(没有sci-notation的位置标识符)并且也吃它(在转换结果值中具有适当的准确度/ sig figs)。虽然我可以忽略位置识别科学记数法(可能将其更改为chr
与numeric
列),但我需要避免改变测量的准确性。
也许有人可以告诉我这是否可行,特别是当结果集包含来自不同精度的仪器报告的结果时。我已经搜索了各种资源并找到了一些相关的主题,但没有什么可以解决这个问题。
感谢您的帮助/指导。