• 统计数据转换


    (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数据按规定格式储存并命名,数据导入同上。

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

  • 相关阅读:
    渲染管线
    C++windows内核编程笔记day13 进程、线程与信号量
    稻盛和夫:真正的聪明人,善于把事物简单化
    学会把复杂问题简单化
    任何事物,只要抓住了规律,就等于牵住了牛鼻子
    菩萨奶奶引领我学佛
    数据库每分钟运行监控SQL
    MySQL 从库down机
    sql server 跟踪日志
    胡小林:把日常生活中碰到的事变成我们发露忏悔的机会
  • 原文地址:https://www.cnblogs.com/cloudtj/p/6120992.html
Copyright © 2020-2023  润新知