统赛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中的数据发生了变化,如下图:
要导入的数据:
导入后的结果:
分新原因:
经过调试发现,当excel中的【单元格格式】设置为【数值】类型时,java后台获取到的是使用科学计数法表示的,如下图所示:
这时还是没有问题的,但是结果为什么出错呢,是因为类型转化的问题,这里不能使用String.valueOf( ) 方法进行转换。
解决问题:
使用数字类型格式化类 DecimalFormat顺利地解决了这个问题,如下方法:
value=new DecimalFormat().format(cell.getNumericCellValue());//这里得到的是用“,”隔开的数字串 value = value.replace(",", "");
结果如下:
为了方便设置数字格式,这里简单总结了 DecimalFormat顺的构造方法,如下:
DecimalFormat下的方法不再一一展示,有需要的可以查询一下。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。