楼主: 小鳄鱼a
5017 18

紧急求助 [推广有奖]

  • 6关注
  • 10粉丝

学科带头人

3%

还不是VIP/贵宾

-

威望
0
论坛币
125 个
通用积分
0.0040
学术水平
40 点
热心指数
45 点
信用等级
43 点
经验
32801 点
帖子
1185
精华
0
在线时间
1539 小时
注册时间
2009-7-16
最后登录
2018-10-5

189论坛币
在excel 中   左边是原始文件   右边是想要得到的   谢谢哇  直接拿出所有论坛币了

表格变换.xlsx

9.25 KB

需要: 30 个论坛币  [购买]

关键词:紧急求助 急求助 EXCEL exce xcel excel
沙发
zhengbo8 发表于 2015-10-23 22:13:12 |只看作者 |坛友微信交流群
2015-10-23_234426.gif
已有 1 人评分论坛币 学术水平 收起 理由
admin_kefu + 30 + 5 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 5   查看全部评分

使用道具

藤椅
zhengbo8 发表于 2015-10-23 22:32:52 |只看作者 |坛友微信交流群
直接读取excel转换吗?

使用道具

板凳
小鳄鱼a 发表于 2015-10-23 22:47:05 |只看作者 |坛友微信交流群
zhengbo8 发表于 2015-10-23 22:32
直接读取excel转换吗?
excel 或者 sas都可以的

使用道具

报纸
zhengbo8 发表于 2015-10-23 23:07:41 |只看作者 |坛友微信交流群
完美解决。求币啦~{:2_31:}
附上数据。 rawdata.xlsx (8.87 KB)
  1. PROC IMPORT OUT= WORK.raw
  2.             DATAFILE= "D:\rawdata.xlsx"
  3.             DBMS=EXCEL REPLACE;
  4.      RANGE="Sheet1[        DISCUZ_CODE_0        ]quot;;
  5.      GETNAMES=YES;
  6.      MIXED=NO;
  7.      SCANTEXT=YES;
  8.      USEDATE=YES;
  9.      SCANTIME=YES;
  10. RUN;

  11. data result;

  12.         set raw;

  13.         length name temp $200;
  14.         retain temp;

  15.         if _n_=1 then temp=_COL1;
  16.         if _COL1='' then _COL1=temp; else temp=_COL1;

  17.         _COL4=tranwrd(_COL4,"、","|");

  18.         i=1;
  19.         name=strip(scan(_COL4,i,'| '));

  20.         do while (strip(scan(_COL4,i,'| ')) ne '');
  21.                 name=strip(scan(_COL4,i,'| '));
  22.                 i=i+1;
  23.                 output;
  24.         end;

  25.         keep _COL1 _COL2 _COL3 name;

  26. run;
复制代码

使用道具

地板
小鳄鱼a 发表于 2015-10-23 23:30:58 |只看作者 |坛友微信交流群
zhengbo8 发表于 2015-10-23 23:07
完美解决。求币啦~
附上数据。
WARNING: The quoted string currently being processed has become more than 262 bytes long.
         You might have unbalanced quotation marks.
19           length name temp $200;
20           retain temp;
7         RANGE="Sheet1[        DISCUZ_CODE_0        ]quot;;
                --------------------------------------------
                49
NOTE 49-169: 加引号字符串后的标识符的含义可能在将来的 SAS 版本中更改。
             建议在加引号的字符串和其后的标识符之间插入空格。

21
22           if _n_=1 then temp=_COL1;
23           if _COL1='' then _COL1=temp; else temp=_COL1;
24
25           _COL4=tranwrd(_COL4,"、","|");
                                  --
                                  22
ERROR 22-322: 期望: ;.

26
27           i=1;
28           name=strip(scan(_COL4,i,'| '));
29
30           do while (strip(scan(_COL4,i,'| ')) ne '');
31                   name=strip(scan(_COL4,i,'| '));
32                   i=i+1;
33                   output;
34           end;
35
36           keep _COL1 _COL2 _COL3 name;
37
38   run;

使用道具

7
zhengbo8 发表于 2015-10-23 23:35:51 |只看作者 |坛友微信交流群
小鳄鱼a 发表于 2015-10-23 23:30
WARNING: The quoted string currently being processed has become more than 262 bytes long.
        ...
这不是程序问题,是论坛贴代码时遇到$乱解析。
使用我的sas程序文件试试。
记得把后缀改为sas。{:2_28:}
test.txt (607 Bytes)

使用道具

8
小鳄鱼a 发表于 2015-10-23 23:39:18 |只看作者 |坛友微信交流群
zhengbo8 发表于 2015-10-23 23:35
这不是程序问题,是论坛贴代码时遇到$乱解析。
使用我的sas程序文件试试。
记得把后缀改为sas。{:2_28: ...
能否说下excel都改的什么内容      因为左边那列栏目比较多    应该怎么修改呢

使用道具

9
zhengbo8 发表于 2015-10-23 23:43:47 |只看作者 |坛友微信交流群
不用修改,去掉你右边示例的结果。

使用道具

10
小鳄鱼a 发表于 2015-10-23 23:49:30 |只看作者 |坛友微信交流群
zhengbo8 发表于 2015-10-23 23:43
不用修改,去掉你右边示例的结果。
谢谢个000000000000000000000000000000

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-11 05:04