楼主: edwardzxf
1371 6

[原创博文] 变量类型 [推广有奖]

  • 0关注
  • 2粉丝

已卖:32份资源

讲师

26%

还不是VIP/贵宾

-

威望
0
论坛币
222 个
通用积分
0.4203
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
3991 点
帖子
242
精华
0
在线时间
375 小时
注册时间
2010-7-30
最后登录
2021-5-25

楼主
edwardzxf 学生认证  发表于 2011-8-5 21:49:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
Log里出来这样一个Note:

NOTE: Numeric values have been converted to character values at the places given by:
      (Line):(Column).
      3:31     3:105    3:111    5:31     5:105    5:111    7:31     7:105    7:111    9:31
      9:105    9:111    11:31    11:105   11:111   13:31    13:105   13:111   15:31    15:105
      15:111   17:31    17:105   17:111   19:31    19:105   19:111   21:31    21:105   21:111
      23:31    23:105   23:111   25:31    25:105   25:111
请问如何解决这个问题,我的那个变量本来就是num类型的,我不要它变成char,因为否则无法计算。再有(Line):(Column). 3:31 如何对应具体那个观察值得。谢谢啦

原代码是:
%macro define;
   
  data;
  set temp1;
     %do i=1 %to &T %by 1;
              %let year=%eval(2010+&i);
              %let yearLag1=%eval(&year-1);
                      %do n=1 %to 1000 %by 1;
                                %global Price_2010_&n;
                                 %global ROE_&year._&n;
                                 %global BPS_&yearLag1._&n;
                      %end;
  
              call symput(("Price_"||"2010"||"_"||compress(_n_)),Price_2010);
              call symput(("ROE_"||"&year"||"_"||compress(_n_)),ROE_&year);              
              call symput(("BPS_"||"&yearLag1"||"_"||compress(_n_)),BPS_&yearLag1);
                  
     %end;
run;

%mend define;

%define;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:变量类型 Character converted compress Converte character values 如何

沙发
jingju11 发表于 2011-8-5 22:28:10
应该把产生该log的相关code贴一下。那个变量本来是什么呢?京剧

藤椅
edwardzxf 学生认证  发表于 2011-8-5 22:38:32
jingju11 发表于 2011-8-5 22:28
应该把产生该log的相关code贴一下。那个变量本来是什么呢?京剧
有原代码了.....

板凳
jingju11 发表于 2011-8-5 23:19:01
edwardzxf 发表于 2011-8-5 22:38
有原代码了.....
对不起。答非所问。
原因是symput routine 需要字符串。改为 symputx即可

  1. data _null_;
  2.     x =123;
  3.     call symput('x1', x); *note for numeric coversion;
  4.     call symput('x2', put(x, best.));     *no note;        
  5.     call symputx('x3', x); *no note;   
  6. run;
复制代码



已有 2 人评分经验 热心指数 收起 理由
crackman + 40 + 1 热心帮助其他会员
edwardzxf + 1 热心帮助

总评分: 经验 + 40  热心指数 + 2   查看全部评分

报纸
edwardzxf 学生认证  发表于 2011-8-5 23:51:21
jingju11 发表于 2011-8-5 23:19
对不起。答非所问。
原因是symput routine 需要字符串。改为 symputx即可
嗯,非常感谢。我改成了:
call symputx(("Price_"||"2010"||"_"||compress(_n_)),Price_2010);
call symputx(("ROE_"||"&year"||"_"||compress(_n_)),ROE_&year);                           
call symputx(("BPS_"||"&yearLag1"||"_"||compress(_n_)),BPS_&yearLag1);

可结果还有那个notes,只不过显示的方式换了下:
NOTE: Numeric values have been converted to character values at the places given by:
      (Line):(Column).
      -766E4:***   -766E4:***   -766E4:-52   -766E4:***   -766E4:***   -766E4:-52   -765E4:***
      -765E4:***   -765E4:-52   -764E4:***   -764E4:***   -764E4:-52   -764E4:***   -764E4:***
      -764E4:-52   -763E4:***   -763E4:***   -763E4:-52   -762E4:***   -762E4:***   -762E4:-52
      -762E4:***   -762E4:***   -762E4:-52   -761E4:***   -761E4:***   -761E4:-52   -76E5:***
      -76E5:***    -76E5:-52    -76E5:***    -76E5:***    -76E5:-52    -759E4:***   -759E4:***
      -759E4:-52

恳求继续指点,谢谢

地板
jingju11 发表于 2011-8-6 00:04:41
compress(_n_) changes to
cats(_n_)

7
zkymath 在职认证  发表于 2011-8-6 13:31:31
看不懂啊,看来还要继续学习

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 18:12