Entries Tagged 'Computers and Internet' ↓

Excel杂谈

SAS-Excel

晚提到Excelpro的新书,《Excel图表之道——如何制作专业有效的商务图表》(刘万祥,北京:电子工业出版社,2010)。说些Excel,从一个SAS程序员的角度。

相对SAS,或其他的软件包(SPSS、R/S-Plus、Matlab等),Excel都是一个轻量级的分析工具。本来,Excel无意在统计分析方面跟那些统计工具包一较长短,各有适用的地方而已。但在商业世界,用Excel做分析的用户太多了,说最流行也不为过,一些统计学者,就提醒广大用户,用Excel做统计分析时一定要谨慎些,它有时候不够严谨有时候不够靠谱。详细的,可以参考谢益辉的三篇博文(以及他文中所附的参考材料):

1.Excel中的缺失值和0

2.为什么避免用Excel作统计计算

3.再谈为什么不用Excel做统计分析

用Excel本身的计算引擎有时是不够严谨,这是故事的一个方面(当然,它应付日常工作还是可以胜任的,对Excel,我们这点信心还是有)。故事的另一个方面,是鉴于Excel的广泛流行,各大BI(商务智能)套件,包括SAS系统,都要提供与Office/Excel整合的功能。上面就是 SAS Add-In for Microsoft Office在Excel里面的一个截图。利用这个Excel插件,商业用户可以继续使用他/她熟悉的Excel,访问SAS数据,并利用SAS的计算引擎来分析和作图,最后结果返回到Excel(或者Word、PPT)。一家公司不提供这玩意,它的BI技术就要受到质疑,至少也是没有做到user-friendly。夸张点说,小小的Excel就这样爬上了BI平台的最顶端。

我们注意到,与Excel的整合,重点是把它作为用户接口和展示平台。对一个传统的SAS程序员,与Excel打交道也是他职业生涯的一部分:

1. 有时候,数据会存储在Excel里面。你可能没法理解,为什么要把数据存在Excel里面,这样轻量级的数据,存在文本里面不是更好吗?在真实世界里,大部分人的行为模式一般是这样,他们打开Word来记事,打开Excel来记录数据。数据存在Excel或许也能接受,如果它们规规矩矩,行列有序。有一种情形就是,在一个Excel Book里,数据散布于各个Sheets,在同一个Sheet,数据可能不是按行列来排,而是长得就像一个report。平心而论,这样的数据真的是user-friendly,只是不够machine-friendly。在Windows平台下,SAS Base有三种最常用的方式读取Excel数据:

1-1 proc import or Import Wizard

1-2 SAS Excel Libname Engine

1-3 SAS DDE (Dynamic Data Exchange,这属于Windows的技术)

Excel不是一个跨平台的数据格式。在Unix平台下,如何读取Excel数据呢?SAS也有解决方案,那需要用到一个SAS/ACCESS Interface to PC Files for UNIX和SAS PC File Server for Windows,这也是一个Libname Engine的方式。

2. 读入Excel数据,一个相反的操作就是把SAS数据(或output)转化成Excel。程序员或许不太愿意,但这在商业世界有需求。这里SAS更是提供了五花八门的解决方案:

2-1 proc Export or Export Wizard

2-2 SAS Excel Libname Engine

2-3 SAS DDE (Dynamic Data Exchange)

2-4 proc printto

2-5 SAS ODS

2-6 data steps

2-7  SAS Add-In for Excel

……

除了DDE,你还可以利用其他非SAS技术,比如ODBC、OLE DB等。有一个小花招。利用ODS,可以把数据转化成用户可以用Excel打开的CSV、XML或者HTML格式,而它们本身是比.xls更优越的存储格式。特别是CSV(comma-separated values file),本身是文本文件,在Windows世界里,很多用户都把它当成Excel的一种格式,默认的打开方式也是Excel(而不是文本编辑器)。

罗列了这么多SAS与Excel的交互,回到Excel本身。它是一个功能强大的电子表格,在数据分析与展示方面也有不俗的表现(Excel作图,可以参考上面提到的Excelpro所达到的境界)。它赢得如此多的用户,说明它能满足大部分人大部分的需求。一个SAS用户,或者SPSS、R/S-Plus、Matlab等用户不必在统计分析方面展示对Excel的优越,这样显得就不够大气了——本来Excel就无意在这方面跟它们竞争。况且,即使工具之间有优劣,工具的本身的先后也不代表他们用户的先后,急于争辩工具厉害的人,往往忽略了人本身,自以为手持屠龙刀,就无敌于天下。笑话。

————————————————————————–

再讲个笑话,跟谢益辉有关(最近举例似乎老拿谢同学说事)。谢于数据可视化颇有研究,最近秀出了不少的工作,当然都是用R来展示。楼下便有人惊呼:R好强大啊。不知道谢听了做如何想。

《Excel图表之道》——书和人

Excel

 

Excelpro的《Excel图表之道——如何制作专业有效的商务图表》(刘万祥,北京:电子工业出版社,2010)4月份由武汉博文视点推出。我拿到书时,都已经是5月份第二次印刷的版本。“左手Excel,右手PPT”,现在这本书与一本叫《PPT演示之道》的书在当当卓越大卖,被认为是“2010年最值得阅读的职场充电图书”。好家伙,早知道这本书会火,没想到的是会这么快。扯扯我与这本书及其作者的花絮。

Excelpro一直在经营一个“ExcelPro的图表博客”,专攻Excel与商务作图,把Excel玩出花来的那种。读研时开始订阅他的博客,那时就想结识一番,这样的高手,要趁早认识。查看gmail记录,2008年12月19日,我给Excelpro写mail(当时只知道他的网名),说“ExcelPro,  你好。一有更新就看你的博客,还不知道你的真名真是有些说不过去。我叫***,blablabla”。很快收到回复。

知道了Excelpro的大名,按着习惯,在接下来的沟通中,我就直呼“万祥”了。在公司,包括以前的实习单位,无论同事还是老板,或者老板的老板,都是直接叫名字,慢慢也养成这习惯了——关于称谓,有一个趣事在下面,先打住。

武汉博文的周筠老师,不知什么时候也在看“ExcelPro的图表博客”。看这个博客,我的反应是高手要趁早认识,周老师的反应大概是,这样好的内容,要趁早出书。于是去年年底,武汉博文的编辑梁晶,问我能不能帮着看看一本Excel方面的新书。一看,ExcelPro,这么巧啊。赶紧答应下来,刚好可以趁着看文稿的机会好好学习一下Excel作图。

这本书讲Excel作图,可不是“excel->插入->图表->图表向导”这么简单。这种默认的作图方式,大伙一眼就能看出来,就是传统的、灰头土脸的Excel图表(熟悉吧?):

excel0

而这本书,是教你用Excel做出这样的图来:

excel1

是不是也很熟悉?就是国外顶尖商业杂志如《商业周刊》、《经济学人》等杂志风格的商务图表。如何做到,如何用Excel做到?审稿的时候,我就是这样怀着激动的心情,看Excelpro如何突破Excel的默认颜色、默认布局和默认的作图元素,从而一步步做出类似上图的专业商务图表,真是大呼过瘾。书还附有数据和样例,自己可以随手在机器上跟着实现。我平时鼓捣SAS,Excel用得不多,看了这书(你可以在这里下载高清样章),想什么时候该自己用Excel了,照着这书玩下去,铁定又是一条好汉。

出版社的老师喜欢称呼作者为老师。跟周老师和梁晶编辑邮件来往,她们都会提到“刘万祥老师”,一看,心想:惨了,我跟Excelpro邮件来往,叫名字都叫顺口了。我称呼周筠老师,周筠老师称呼刘万祥老师,而我就直呼“万祥”!这可窜辈了,邮件fwd来fwd去的。问Excelpro,最后我们约定,私下里我们称名字,有周老师在场就叫老师。——后来,刘万祥老师终于跟我开了个玩笑,在书的前言里,他写道:“感谢本书的评审专家孔文达老师、杜茂康老师和胡江堂老师”——“胡江堂老师?”我旁边朋友一看,立马收不住笑,Friday Humor?

SAS vs. R

在“统计之都”(COS)发布了一篇《Think  SAS》,是有感于R在学院(尤其是统计系)的流行,主要是写给对工业界感兴趣的在校生看,动员他们在学R之余,不妨考虑一下SAS。不想却引来长篇的R与SAS之争。关于软件的功能,比如R或SAS,本身没有任何问题:一个语言,只要能使分支语句和循环,再加上极少的要求,就可以完成几乎所有的任务了(语言的完备性,要求其实很简单)。所以讨论R与SAS谁更强大,意义不大,这更多是个人使用偏好的问题。在“统计之都”的博客文章,评论大多很精彩,有的甚至要超过正文,读者朋友不妨移步观望下。这将会是一个系列文章,陆续在COS发布,慢慢写了。

又,关于R与SAS,Peter Flom也在写系列比较文章,见

1. SAS v. R: Ease of learning

0. SAS vs. R: Introduction and request

BNF标记法:简介

Backus-Naur Form,巴克斯-诺尔形式

你经常看到类似下面的语法说明:

PROC FREQ < options > ;
BY variables ;
EXACT statistic-options < / computation-options > ;
OUTPUT < OUT=SAS-data-set > options ;
TABLES requests < / options > ;
TEST options ;
WEIGHT variable < / option > ;

这些类似的标记就称作Fackus-Naur Form,简称BNF,是John Backus和Peter Naur为每一种编程语言设计的语法规则标记符号。 这套标记法非常复杂,一般掌握下面的一个超级简化版本就可以了:

 

符号 含义
<> 包含术语,必选项
| 分隔可选项(互斥OR)
[] 可选项
{} 指出至少需要一个必须项
,… 指出可以可选地被重复多次的项目

 

Technorati Tags: , ,

Windows下运用Linux工具(一):G++/Cyguns

想到要一个C++编译器,只是要运行一些C++程序,犯不着装吓人的集成开发环境如VC之类,就在Arthur H. Lee的主页上找了一个G++的Windows版,Cyguns,安装以后占的硬盘才37M多一些。安装以后记得设置环境变量,不过比Java简单多了:重要的是找到二进制文件bin的文件地址,按折默认的安装路径,我的bin文件在"C:\cygnus\cygwin-b20\H-i586-cygwin32\bin",找到

“我的电脑”——“属性”——“高级”——“环境变量”——“系统变量”——“Path”

如果没有“Path”,就创建一个。如果以前设置过别的Path,就在它的末尾先加一个分号,接着把bin的文件路径填上如:

;C:\cygnus\cygwin-b20\H-i586-cygwin32\bin

以后就可以用记事本写程序,在控制台编译并运行了。比如写一个"Hello World":

// hello.cpp

#include <iostream>
using namespace std;

int main() {
cout << "Hello World!";
return 0;
}

把这个文件取名为hello.cpp, 并存于如"E:\cpp"。一个组合快捷键“开始+R”,打开“运行”,在命令栏敲入cmd,就来到控制台,类似于doc的那种界面。你可以通过两步来到制定的E:\cpp文件夹:

  1. 敲入 e:   回车,这样就会看到E:\>,光标在这里跳跃;
  2. 敲入 cd cpp,回车,这样就会看到E:\cpp>,敲入dir来查看文件夹,你就会看到我们将要处理的hello.cpp;
  3. 接下来就是编译hello.cpp,敲入   g++ -g hello.cpp -o hello -lm
  4. 如果程序没有问题,E:\cpp下面应该出现一个hello.exe的可执行文件;
  5. 接着在控制台敲入hello,回车,屏幕就会打印一条Hello World!

就这么简单。

Excel-备忘录

  1. 按住Ctrl键,用鼠标可以一次选取多个单元格区域。
  2. 组合键Ctrl+Home,Ctrl+End
  3. 绘图,按Ctrl,用鼠标点中一个图再拖动
  4. F12,另存为
  5. 单击工作sheet1,右键,出现“工作标签颜色”
  6. 合并单元格!!选定区域,右键,“设置单元格格式”——“对齐”——“合并单元格”
  7. 选定区域,右键,“设置单元格格式”!!!!!!!!
  8. 菜单栏,“格式”——“自动套用格式”
  9. 录制宏 1)工具——宏——录制新宏
    2)工具——自定义——命令——宏,拖放至工具栏;再指定宏
    3)取消,“窗口”——“取消隐藏”;“工具”——“宏”,删除
  10. 分数的录入:在分数前加0和空格,即0 3/5=3/5,否则看成日期处理
  11. “数据”——“记录单”
  12. !!!!!数据的自动填充

    1)填充柄 日期、时间、星期、“文本+数字”、“数字+文本”:自动填充
    若是单独的文本或数字,填充相同的内容
    输入两个数值,自动填充等差序列

    2)Ctrl+Enter复合键:在不同单元格一次性输入同一数据
    按enter选定不同的单元格,键入数据,按Ctrl+Enter

    3)“编辑”——“填充”——“序列”

  13. Ctrl+`,公式与结果的切换
  14. 数据的分列:“数据”——“分列”
  15. 窗口冻结:让变量不动,选定第一个纪录,冻住
    窗口拆分
  16. 查找与替换:“编辑”——“替换”,ctrl+h
  17. 插入当前时间、日期ctrl+;
    ctri+shift+;
    连起来显示,中间加空格。
  18. 数据——分类汇总
  19. 数据——数据透视表和数据透视图 

以上都是在看宇传华的《Excel与数据分析》时随手打开记事本记下的。零乱不堪,权当备忘。Excel这东西,只要知道哪里有哪些东西,上手很快。

在UltraEdit中配置Java编译器

昨天上网找如何在UltraEdit中配置Java编程环境,死活不成功,网上的说法多主张在命令栏输入完整路径名,如        

  1. Dr. Schoenly’s courses:Use of UltraEdit (commercial software) for Java programming
  2. Dr. Olek’s Computer Lab Handouts:How to set up UltraEdit to work with Java compilerr
  3. 一个新浪技术部博客:使用EditPlus配置Java编译环境
  4. 技术员资料:用EditPlus。还是用UltraEdit比较好

我把这些贴出来,可能会对你有用,但我不知道他们是如何成功的。我用的是UltraEdit-32 Version13.00,在网上有试用版下载。我的UltraEdit能够自动识别Java的安装路径,具体设置如下:

  1. 打开UltraEdit——高级(Advance)——工具栏配置(Tool Configuration);
  2. 在命令栏(Command Line)依样输入javac "%f"
  3. 在工作目录(Working Directory)依样输入%p
  4. 在菜单项目名称(Menu Item Name)输入javac,表示这是Java编译器,这个名字随意,主要是前面两项要依样画瓢,不要输入完整的路径名; 接着在选项(Option)选中"Doc Program"和"Save all files first",在结果(Output)一栏选中"Output to List Box"和"Capture Output",好像是默认的,这样完了以后,就点插入(Insert);
  5. 然后是配置Java执行器了,类似地,跟Javac一样的栏目里,在命令栏和工作目录栏分别填入java "%n"和%p,然后在菜单项目名称里面给它命名为java;接下来在选项和输出的栏目里,钩上与javac设置一样的项目,点插入结束。

 

这样配置好以后,点“高级”菜单就会出现“javac”和“java”这两个子项,以后在UltraEdit编写Java程序,就可直接点“javac”来编译,点“java”执行,再也不用打开cmd了。这两个子项还有相应的快捷键。