R语言-如何将科学计数法表示的数字转化为文本

时间:2022-06-01 17:09:01

统赛B组我们选择了图书馆课题,获得了数据,一时兴起尝试处理了一下门禁的数据,遇到了一些问题,特此记下,方便以后查阅。

门禁数据分为两个变量,第一列为学号,第二列为进门时间,原本是Excel文件,为了方便读入R我把它另存为了csv文件,但在读入R以后出现了一些问题

1、学号被存储为了科学计数法表示的数字

2、时间显示的也不全面,有些乱码

时间问题可以在Excel中把单元格格式设置一下就解决了,但是学号问题却遇到了一些小麻烦,我本来是想用

menjin$studentcode <- as.character(menjin$studentcode)

来解决,但是却。。。。没有任何反应,情急之下我google了一下,终于找到了结决方法,

menjin$studentcode <- format(menjin$studentcode,digits = 14)

解决了这一问题

 

以下是format()函数具体的用法:

format(x, digits, nsmall, width)

digits, nsmall, and width are all optional: nsmall suggests how many decimal places to use;digits suggests how many significant digits to include; and width suggests how long the total character string should be.

补充:将科学计数法转化为常规格式再转化为字符串类型(String)

 

问题描述:

在向Datagrid(也包括datacell,和前端使用的框架有关)中导入数据的时候遇到了一个这样的问题:当excel中的【单元格格式】设置为【数值】类型时,导入到datagrid中的数据发生了变化,如下图:

要导入的数据:

R语言-如何将科学计数法表示的数字转化为文本

导入后的结果:

R语言-如何将科学计数法表示的数字转化为文本

分新原因:

经过调试发现,当excel中的【单元格格式】设置为【数值】类型时,java后台获取到的是使用科学计数法表示的,如下图所示:

R语言-如何将科学计数法表示的数字转化为文本

这时还是没有问题的,但是结果为什么出错呢,是因为类型转化的问题,这里不能使用String.valueOf( ) 方法进行转换。

 

解决问题:

使用数字类型格式化类 DecimalFormat顺利地解决了这个问题,如下方法:

  value=new DecimalFormat().format(cell.getNumericCellValue());//这里得到的是用“,”隔开的数字串
  value = value.replace(",", "");

结果如下:

R语言-如何将科学计数法表示的数字转化为文本

为了方便设置数字格式,这里简单总结了 DecimalFormat顺的构造方法,如下:

R语言-如何将科学计数法表示的数字转化为文本

DecimalFormat下的方法不再一一展示,有需要的可以查询一下。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/RicardoYWL/article/details/51752181