2
我有一个dbf格式的文件,我想将它读入R并进行小操作。如何在将数据帧保存到dbf中时控制数据精度R
library(foreign)
library(dplyr)
library(spsurvey)
### set working directory
coverage <- foreign::read.dbf("coverage.dbf")
coverage_adj <- mutate(coverage, VAR1 = replace(VAR1, VAR2 == "X" & VAR1 == "Y", "Z"))
write.dbf(coverage_adj, "coverage_adj.dbf")
尽管事实上,尽管事实上,覆盖表中的数字列在保存后失去了精度,但一切正常。
例如,列VAR3最初是一个带有2个小数点的数字。这是怎么回事显示R:
> head(coverage$VAR3)
[1] 163.78 34.61 1063.97 212.78 6.93 91.46
R中调整表看起来也那么好与数字2个小数点:
> head(coverage_adj$VAR3)
[1] 163.78 34.61 1063.97 212.78 6.93 91.46
但是之后write.dbf(),如果我打开保存的文件FoxPro中的Excel,我可以看到:
163.780000000000000 34.609999999999900 1063.970000000000000 212.780000000000000
有没有办法保存数据类型及其精度,同时从R保存dbf?
这是在R地狱的第一章中介绍的。其中一个想法是在用'round(...,digits = 2)'操作后简单地舍入结果' – mts
@mts这是否意味着在保存dbf之前,我必须将每个数值舍入到dbf中指定的类型? –
这取决于事后精确度对您的使用有多重要。在你的情况下,差异体现在第10位。而如果不会受到伤害,你应该知道它是否值得你的麻烦 – mts