楼主: 3qsir
10131 18

标准化问题: PROC STANDARD [推广有奖]

  • 2关注
  • 1粉丝

副教授

52%

还不是VIP/贵宾

-

威望
0
论坛币
13606 个
通用积分
27.0809
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
71836 点
帖子
367
精华
0
在线时间
931 小时
注册时间
2011-5-18
最后登录
2021-3-6

楼主
3qsir 发表于 2014-3-9 12:49:58 |AI写论文
20论坛币
虽然短短几行程序, 还是想不出所以然来
I want to standardize(bm1-bm5) every month from 19907 to end (mabe 201312) under N(0,1),
What's happen to run PROC STANDARD if observation= "." ?

*before file:*
IND   199007         199008       199009         199010            199011            199012       199101          199102         199103
bm1    4.99                .              -3.45            8.05                -0.66                0.19          -0.54            -5.59            1.21
bm2    3.76            -10.81          -8.46            3.05                -3.06                -1.04         - 8.22           1.68              1.31
bm3    4.90            -10               -9.17            3.31                -3.18                0.01         -1.93            8.47             -1.13
bm4    4.25            -10.48           -9.96           3.25                -3.58               -1.35          -1.86           7.71              -2.03
bm5    4.93             -9.97            -10.32         3.13                -3.51               -0.55          -3.15           8.36              -2.42
-----------------------------------------------------------------------------------------------------------------------------------------------------
SAS LOG file
15         PROC STANDARD DATA=work.before
16              MEAN=0 STD=1 OUT=after;
17              VAR 199007 19908 19909 199010 199011 199012 199101;
18        PROC MEANS DATA=after MAXDEC=2 MEAN STD;
19        RUN;
ERROR 22-322: Syntax error, expecting one of the following: a name, ;, _ALL_, _CHARACTER_, CHAR_, _NUMERIC_.  
ERROR 76-322: Syntax error,    statement will be ignored.
关键词:Standard stand STAN DaR 标准化 before file

沙发
yongyitian 发表于 2014-3-9 12:49:59
  1. /* Since the variable name begins with a digit,
  2.    you may try to add ' 'n around the variable name as shown in the follows.
  3. */

  4. PROC STANDARD DATA=work.before
  5.        MEAN=0 STD=1 OUT=after;
  6.        VAR '199007'n '199008'n '199009'n '199010'n '199011'n '199012'n '199101'n;
  7. run;
  8. PROC MEANS DATA=after MAXDEC=2 MEAN STD;
  9. RUN;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
3qsir + 5 + 5 + 5 分析的有道理

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

藤椅
intheangel 学生认证  发表于 2014-3-9 13:42:19
proc standard data=before
mean=0 std=1 out=after;
var ind;
proc means data=after maxdec=2 mean std;
run;



应该是这样吧,亲,var 后面肯定是跟variable的呀
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

板凳
intheangel 学生认证  发表于 2014-3-9 13:53:48
data before;
input ind bm1 bm2 bm3 bm4 bm5;
cards;
199007 4.99 3.76 4.90 4.25 4.93
199008 . -10.81 -10 -10.48 -9.97
199009 -3.45 -8.46 -9.17 -9.96 -10.32
199010 8.05 3.05 3.31 3.25 3.13
;
run;



proc transpose out=a;
id ind;
run;


PROC STANDARD DATA=work.a
MEAN=0 STD=1 OUT=after;
VAR _199007 _199008 _199009 _199010;
PROC MEANS DATA=after MAXDEC=2 MEAN STD;
RUN;




我猜这是你想要的结果
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

报纸
3qsir 发表于 2014-3-9 19:21:08
No matter what  _199007 or  _199007_ , All same result :ERROR
SAS Log:
--------------------------------
15         PROC STANDARD DATA=work.before
16              MEAN=0 STD=1 OUT=after;
17              VAR _199007;
ERROR: Variable _199007 not found.
18         PROC MEANS DATA=after MAXDEC=2 MEAN STD;
19         RUN;

地板
intheangel 学生认证  发表于 2014-3-9 19:36:00
3qsir 发表于 2014-3-9 19:21
No matter what  _199007 or  _199007_ , All same result :ERROR
SAS Log:
-------------------------- ...
proc transpose out=a;
id ind;
run;

要先transpose
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

7
intheangel 学生认证  发表于 2014-3-9 19:37:49
3qsir 发表于 2014-3-9 19:21
No matter what  _199007 or  _199007_ , All same result :ERROR
SAS Log:
-------------------------- ...
proc transpose out=a;
id ind;
run;


PROC STANDARD DATA=work.a
MEAN=0 STD=1 OUT=after;
VAR _199007 _199008 _199009 _199010;
PROC MEANS DATA=after MAXDEC=2 MEAN STD;
RUN;
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

8
3qsir 发表于 2014-3-9 19:44:33
Almostly follow up your code (SAS log under sas 9.2 e/d)
-----------------------------------------
14         GOPTIONS ACCESSIBLE;
15         data before;
16          input ind bm1 bm2 bm3 bm4 bm5;
17          cards;
NOTE: The data set WORK.BEFORE has 4 observations and 6 variables.
22          ;
23          run;
24         
25         proc transpose out=a;
26          id ind;
27          run;
28         
29         PROC STANDARD DATA=work.a
30          MEAN=0 STD=1 OUT=after;
31          VAR _199007 _199008 _199009 _199010;
ERROR: Variable _199007 not found.
ERROR: Variable _199008 not found.
ERROR: Variable _199009 not found.
ERROR: Variable _199010 not found.
32          PROC MEANS DATA=after MAXDEC=2 MEAN STD;
33          RUN;
36         
44         ODS _ALL_ CLOSE;
45         
46         
47         QUIT; RUN;

9
intheangel 学生认证  发表于 2014-3-9 19:48:28

2    data before;
3    input ind bm1 bm2 bm3 bm4 bm5;
4    cards;

NOTE: 数据集 WORK.BEFORE 有 4 个观测和 6 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒


9    ;
10   run;
11
12
13
14   proc transpose out=a;
15   id ind;
16   run;

NOTE: 从数据集 WORK.BEFORE. 读取了 4 个观测
NOTE: 数据集 WORK.A 有 5 个观测和 5 个变量。
NOTE: “PROCEDURE TRANSPOSE”所用时间(总处理时间):
      实际时间          0.02 秒
      CPU 时间          0.03 秒


17
18
19   PROC STANDARD DATA=work.a
20   MEAN=0 STD=1 OUT=after;
21   VAR _199007 _199008 _199009 _199010;

NOTE: 数据集 WORK.AFTER 有 5 个观测和 5 个变量。
NOTE: “PROCEDURE STANDARD”所用时间(总处理时间):
      实际时间          0.00 秒
      CPU 时间          0.00 秒


22   PROC MEANS DATA=after MAXDEC=2 MEAN STD;
23   RUN;

NOTE: 正在写入 HTML Body(主体)文件: sashtml.htm
NOTE: 从数据集 WORK.AFTER. 读取了 5 个观测
NOTE: “PROCEDURE MEANS”所用时间(总处理时间):
      实际时间          0.59 秒
      CPU 时间          0.35 秒
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

10
intheangel 学生认证  发表于 2014-3-9 19:49:09
data before;
input ind bm1 bm2 bm3 bm4 bm5;
cards;
199007 4.99 3.76 4.90 4.25 4.93
199008 . -10.81 -10 -10.48 -9.97
199009 -3.45 -8.46 -9.17 -9.96 -10.32
199010 8.05 3.05 3.31 3.25 3.13
;
run;



proc transpose data=before out=a;
id ind;
run;


PROC STANDARD DATA=work.a
MEAN=0 STD=1 OUT=after;
VAR _199007 _199008 _199009 _199010;
PROC MEANS DATA=after MAXDEC=2 MEAN STD;
RUN;



你是不是默认的数据集不是before?
你数据集a里面有数据么?
已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

总评分: 论坛币 + 100   查看全部评分

我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 01:13