统计数据转换

(2016-12-1 银河统计)

本文开始介绍运用银河统计库函数进行统计数据存储、转换、处理和运算。将不同类型数据导入“数据窗口”或转换为数组、格式化字符变量,是进行统计数据分析的前提。

在网络技术环境中进行统计工作,必须按计算机技术广泛运用的数据格式和规范进行统计数据的存储、处理、交换和展示。在网络统计学中,统计数据一般采用格式化字符、数组(Array)和JSON数据格式。格式化字符便于数据存储和交换,JSON和数组便于数据处理和计算。特别是数组,具有操作简便、数据处理效率高的优点,统计运算基本是先将数量型数据转换为数组格式再进行计算。

在统计数据存储、处理、交换和展示过程中,需要数据在不同数据格式相互转换。


1、数据存储和转换工具窗口


数据窗口
数据命名    

代码窗口

代码运行效果

2、数据存储和转换函数和实例代码


(1)网络统计基础函数

函数:webTJ.show(id,txt/arr,k)
功能:以文本或数组方式显示字符串txt或数组arr
参数:id指定显示窗体(id="oShow");txt字符串/arr数组;k显示模式(k=1文本、k=2数组)

函数:webTJ1.display(txt/arr,k)
功能:以文本或矩阵方式显示字符串txt或数组arr
参数:txt字符串/arr数组;k显示模式(k=1文本、k=2矩阵)

函数:webTJ1.clear()
功能:清除“代码运行效果”窗体

函数:webTJ1.getData()
功能:获得“数据窗口”文本框中数据

函数:webTJ1.setData(txt)
功能:将字符数据txt赋值到“数据窗口”文本框中

(2)一维数组转换为格式化字符串

函数:webTJ.getStr(arr,",")
功能:将一维数组arr转换为以“,”分割的字符串

实例:

var oArr=[97,72,10,544,114,44,12]; //将一维数组赋值给变量oArr;
var oTxt=webTJ.getStr(oArr,","); //将一维数组转换为以“,”分割的字符串;
webTJ.show("oShow",oTxt,1); //以文本方式显示字符串oTxt;
webTJ.show("oShow",oTxt.substr(0,2),1); //显示字符串oTxt前2个子字符;

注:可用鼠标选择实例代码,然后复制、粘贴到“代码窗口”文本框中并运行代码(Ctrl+C复制、Ctrl+V粘贴)。下同

(3)二维数组转换为格式化字符串

函数:webTJ.getStrs(arrs,"|",":")
功能:将二维数组arrs转换“|”为行、“:”为列分割的字符串

实例:

var oArrs=[ //将二维数组赋值给变量oArrs;
    [97,72,15,44,66],
    [114,44,17,22],
    [145,45,171,41],
    [197,28,233,73],
    [231,35,300,65]]; 
var oTxt=webTJ.getStrs(oArrs,"|",":"); //将数组转换“|”为行、“:”为列分割的字符串
webTJ.show("oShow",oTxt,1); //以文本方式显示字符串oTxt;
webTJ.show("oShow",oTxt.substr(0,5),1); //显示字符串oTxt前5个子字符;

(4)字符串转换为一维数组

函数:webTJ.getArr(txt,",")
功能:将字符串txt转换为一维数组

实例:

var oTxt="977,105,114,127,145,171,197,233"; //将以“,”分割的字符串赋值给变量oTxt
var oArr=webTJ.getArr(oTxt,","); //将字符串转换为一维数组并赋值给变量oArr
webTJ.show("oShow",oArr,1); //以文本方式显示数组变量oArr
webTJ.show("oShow",oArr[2],1); //以文本方式显示数组变量oArr第3个元素

(5)字符串转换为二维数组

函数:webTJ.getArrs(txt,"|",",")
功能:将字符串txt转换为二维数组

实例:

var oTxt="37,42,95|97,72,10|14,44,12|15,45,17"; //“|”为行、“,”为列分割的字符串;
var oArrs=webTJ.getArrs(oTxt,"|",","); //将字符串转换为二维数组
webTJ.show("oShow",oArrs,1); //以文本方式显示数组变量oArrs
webTJ.show("oShow",oArrs[3][2],1); //以文本方式显示数组变量oArrs第4行3列的元素

(6)二维数组转换为一维数组

函数:webTJ.getArrfromArrs(arrs)
功能:将二维数组arrs转换为一维数组

实例:

var oArrs=[[1,20],[1,2],[3,4],[5,6]]; //将二维数组赋值给变量oArrs
var oArr=webTJ.getArrfromArrs(oArrs); //将二维数组转换为一维数组并赋值给变量oArr
webTJ.show("oShow",oArr,1); //以文本方式显示数组变量oArr
webTJ.show("oShow",oArr[6],1); //以文本方式显示数组变量oArr第7个元素

(7)获得数组行数

函数:webTJ.getRows(arr/arrs)
功能:获得一维或二维数组arr/arrs行数

实例:

var oArr1=[97,10,11,12,14,17,19,23]; //将一维数组赋值给变量oArr1
var oRow1=webTJ.getRows(oArr1); //获得一维数组行数(维数)
var oArr2=[ //将二维数组赋值给变量oArr2
    [97,72,66],[10,54,43],[11,44,24],
    [12,72,12],[16,34,13],[21,35,21],
    [14,54,57],[17,14,11],[19,72,82]];
var oRow2=webTJ.getRows(oArr2); //获得二维数组行数(维数)
webTJ.show("oShow",oRow1,1); //以文本方式显示数组行数
webTJ.show("oShow",oRow2,1);

(8)获得数组列数

函数:webTJ.getCols(arr/arrs,r)
功能:获得一维或二维数组arr/arrs行数
参数:r可选,二维数组时确定指定行列数

实例:

var oArr1=[97,10,11,12,14,17,19,23];
var oCol1=webTJ.getCols(oArr1); //获得一维数组列数(元素个数)
var oArr2=[
    [97,72,66],
    [10,54,43],
    [11,44,24,45,67],
    [12,72,12],
    [14,54,57],
    [17,14,11],
    [19,72,82]];
var oCol2=webTJ.getCols(oArr2,1); //获得二维数组第2行列数
var oCol3=webTJ.getCols(oArr2,2); //获得二维数组第3行列数
webTJ.show("oShow",oCol1,1); //显示一维数组列数(元素个数)
webTJ.show("oShow",oCol2,1); //显示二维数组第2行列数
webTJ.show("oShow",oCol3,1); //显示二维数组第3行列数

(9)将JSON字符串转换为对象

函数:webTJ.getObjfromJSONStr(JSONStr)
功能:将JSON字符串JSONStr转换为对象,以便于数据处理

实例:

var oJSONStr="[{name:'lei',weight:80,age:54},{name:'lijun',weight:70,age:50}]";
//将JSON字符串赋值给变量oJSONStr
var oJSONObj=webTJ.getObjfromJSONStr(oJSONStr);
//将JSON字符串转换为对象并赋值给对象变量oJSONObj
webTJ.show("oShow",oJSONObj[0].name,1);
//显示JSON对象第1个元素name属性的属性值
webTJ.show("oShow",oJSONObj[1].name,1);
//显示JSON对象第2个元素name属性的属性值

(10)将JSON对象转换为JSON字符串

函数:webTJ.getStrfromJSONObj(oJSONObj)
功能:将JSON对象oJSONObj转换为字符串,以便于数据存储

实例:

var oJSONObj=[{name:'lei',weight:80,age:54},{name:'lijun',weight:70,age:50}];
//将JSON对象并赋值给对象变量oJSONObj
var oJSONStr=webTJ.getStrfromJSONObj(oJSONObj);
//将JSON对象转换为字符串并赋值给变量oJSONStr
webTJ.show("oShow",oJSONStr,1); //显示JSON字符串
webTJ.show("oShow",oJSONStr.substr(0,5),1);
//显示JSON字符串前5个字符

(11)从粘贴板获得复制的EXCEL数据(IE浏览器)

函数:webTJ.getClipboardData()
功能:从粘贴板获得复制的EXCEL数据并转换为数组,以便于数据处理

实例:

var oArr=webTJ.getClipboardData();
//从粘贴板获得复制的EXCEL数据表并转换为数组;
webTJ.show("oShow",oArr,1);
//以文本方式显示数组变量oArr
webTJ.show("oShow",oArr[0],1);
//以文本方式显示数组变量oArr第1行数据
webTJ.show("oShow",oArr[0][0],1);
//以文本方式显示数组变量oArr第1行1列元素

注:网络统计学推荐使用Google的Chrome浏览器,但此功能只能用IE浏览器实现

操作步骤:

I、  用IE浏览器打开网络数据转换页面(http://www.cnblogs.com/cloudtj/p/6120992.html)
II、 将实例代码复制、粘贴到代码窗口
III、打开EXCEL文件,复制某一区域数据
IV、 在网页中运行代码并观察结果

(12)将数组转换为EXCEL表格并复制到粘贴板(IE浏览器)

函数:webTJ.setClipboardData(arrs)
功能:将数组arrs转换为EXCEL表格形式数据复制到粘贴板,以便于EXCEL存储数据

实例:

var oArr=[[1,20],[1,2],[3,4],[5,6]];
//将二维数组赋值给变量oArr
webTJ.setClipboardData(oArr);
//将二维数组转换为EXCEL表格形式数据复制到粘贴板

注:网络统计学推荐使用Google的Chrome浏览器,但此功能只能用IE浏览器实现

操作步骤:

I、  用IE浏览器打开网络数据转换页面(http://www.cnblogs.com/cloudtj/p/6120992.html)
II、 将实例代码复制、粘贴到代码窗口
III、打开EXCEL文件
IV、 在网页中运行代码
V、  在EXCEL在选择某单元格并粘贴数据(Ctrl+V)

(13)将数据命名后保存在本地(localStorage)

函数:webTJ.setLocalData(name,str)
功能:将数据str按名称name保存在本地

实例:

var oStr = "本地数据";
var oName = "galaxystatistics_dataTest_myData1";
var oObj = webTJ.setLocalData(oName,oStr);
webTJ.show("oShow",oObj,1);

(14)根据命名获取保存在本地的数据(localStorage)

函数: webTJ.getLocalData(name)
功能:获得名称为name的本地数据

实例:

var oName = "galaxystatistics_dataTest_myData1";
var oStr = webTJ.getLocalData(oName);
webTJ.show("oShow",oStr,1);

(15)根据命名删除保存在本地的数据(localStorage)

函数: webTJ.removeLocalData(name)
功能:删除名称为name的本地数据

实例:

var oName = "galaxystatistics_dataTest_myData2";
var oObj = webTJ.removeLocalData(oName);
webTJ.show("oShow",oObj,1);

(16)将“数据窗口”打开的文件(如EXCEL文本格式文件*.csv)转换为数组

函数: webTJ.getArrsfromSeparator(str,mark,r)
功能:将“数据窗口”打开的格式文件转换为数组
参数:str“数据窗口”中导入的文本字符、mark数据列分割符号、导入数据起始行

实例:

webTJ.clear(); //清空显示窗口
var str=webTJ.getData(); 
//获取“数据窗口”文本并赋值给变量str
var oArrs=webTJ.getArrsfromSeparator(str,",); 
// 数据列分割符号为","(可根据具体情况选择其它符号)
webTJ.display(oArrs,1); //按矩阵格式显示数组

注:详细使用方法参见后面练习实例

 

3、数据操作练习


(1)练习文件:

A. http://www.galaxystatistics.com/webTJX/mobile/blog/data/data.xlsx
B. http://www.galaxystatistics.com/webTJX/mobile/blog/data/Cars.xlsx
C. http://www.galaxystatistics.com/webTJX/mobile/blog/data/Cars.csv
D. http://www.galaxystatistics.com/webTJX/mobile/blog/data/data.txt
E. http://www.galaxystatistics.com/webTJX/mobile/blog/data/data1.txt
F. http://www.galaxystatistics.com/webTJX/mobile/blog/data/data3.txt

下载上面练习文件到本地计算机指定目录中。

(2)EXCEL文件导入练习

在日常统计工作中,EXCEL电子表格非常普及,并且EXCEL和数据库之间、和其它统计软件之间都可以相互交换数据。网络统计经常需要将EXCEL数据导入并转换为数组进行分析、运算。

I、EXCEL数据中没有中文

A. 将EXCEL文档(.xlsx或.xls,如Cars.xlsx)另存为以","分割的文本格式文件*.csv(如Cars.csv);
B. 在“数据窗口”点击“选择文件”按钮,打开Cars.csv文件
C. 复制、粘贴下面代码到“代码窗口”中,运行代码观察输出结果

webTJ.clear(); 
var str=webTJ.getData(); 
var oArrs=webTJ.getArrsfromSeparator(str,","); 
webTJ.display(oArrs[1][1],0);
webTJ.display(oArrs,1);

II、EXCEL数据中没有中文

A. EXCEL文档(如data.xlsx)中有中文时,按上面的方法会出现乱码;
B. 打开EXCEL文档data.xlsx;
C. 复制、粘贴数据WINDOWS的“记事本”纯文本编辑器中,保存为UTF-8编码形式文本文件data.txt;
D. 在“数据窗口”点击“选择文件”按钮,打开data.txt文件
E. 复制、粘贴下面代码到“代码窗口”中,运行代码观察输出结果

webTJ.clear(); 
var str=webTJ.getData(); 
var oArrs=webTJ.getArrsfromSeparator(str," ");
webTJ.show("oShow",oArrs[1][2],1);
webTJ.show("oShow",oArrs,2);

注:webTJ.getArrsfromSeparator(str," ")命令中" "之间的空格要用data.txt文件数据列间的特殊常空格替换(复制、粘贴)

III、通过粘贴板和EXCEL交换数据

参见“从粘贴板获得复制的EXCEL数据(IE浏览器)”和“将数组转换为EXCEL表格并复制到粘贴板(IE浏览器)”。

(3)文本文件(*.txt)导入练习

A. 文本文件中有中文,需用“记事本”保存为UTF-8编码形式文本文件(如data3.txt);
B. 在“数据窗口”点击“选择文件”按钮,打开data3.txt文件;
C. 复制、粘贴下面代码到“代码窗口”中,运行代码观察输出结果。

webTJ.clear(); 
var str=webTJ.getData();
var oSrr=webTJ.getArr(str,"&");
var oTitle=oSrr[0]; //获得数据名称
webTJ.show("oShow",oTitle,1);
var oFieldNameArr=webTJ.getArr(oSrr[1],"|"); //获得数据列名称数组
webTJ.show("oShow",oFieldNameArr[1],1); //显示第2列名称
webTJ.show("oShow",oFieldNameArr,1); //显示所有名称
var oArrs=webTJ.getArrs(oSrr[2],"|",","); //获取具体数据(数值)数组
webTJ.display(oArrs,1); //按矩阵格式显示所有数值数据

(4)网页中表格数据导入练习

网页中经常用HTML的TABLE表格标签显示数据,例如,

这是我的标题
100200300
400500600

可以通过EXCEL按前面介绍的方法导入网页表格数据到网络统计平台中。

A. 用鼠标选择表格数据区域,复制、粘贴(纯数据粘贴,不要表格线)数据到空白EXCEL文档中;
B. 按csv格式保存EXCEL文件(如test.csv);
C. 按全面介绍的方法导入数据。

本地localStorage数据按规定格式储存并命名,数据导入同上。

将统计数据、特别是数值(数量)型数据自动批量导入网络统计系统(一般情况下导入数据被转换为数组),为统计计算、建模奠定了基础。

posted @ 2016-12-01 10:47  银河统计  阅读(974)  评论(0编辑  收藏  举报