楼主: Imasasor
9112 29

word中的规则数据表格可否导入sas? [推广有奖]

  • 1关注
  • 64粉丝

VIP

已卖:215份资源

学科带头人

33%

还不是VIP/贵宾

-

TA的文库  其他...

超哥喜欢的文章

威望
1
论坛币
47033 个
通用积分
3.1376
学术水平
238 点
热心指数
246 点
信用等级
231 点
经验
37132 点
帖子
849
精华
3
在线时间
2235 小时
注册时间
2012-7-4
最后登录
2024-10-10

初级学术勋章 初级热心勋章 初级信用勋章 中级热心勋章 中级学术勋章

楼主
Imasasor 发表于 2012-11-9 10:26:25 |AI写论文
108论坛币
有大概一万个人的临床检验报告单,是word中的表格形式,如图所示,有几十个word文件,每个word中有这样的表格几百个,
每个表格上面的编号即id号为观测,几个检测指标为变量。
请问高手,像这样形式的数据,能否通过某种方法批量导入sas生成数据集!跪求帮助,如果要一个一个再输到excel中,太麻烦了。

word数据.jpg

最佳答案

davil2000 查看完整内容

/*在下面的代码中增加了WINWORD退出机制*/ /*使用前建议重启一下PC*/ options noxwait noxsync; %macro word2sas(in=, out=); /*%let in=&fname;*/ /*%let out=example1;*/ %let rc=%sysfunc(system(start winword)); data _null_; null= sleep(5); run; filename word DDE 'Winword|System'; data _null_; file word; put '[FileOpen.Name = "' "&in" '"]'; put "[EditSelectAll]"; put "[EditCopy]"; put ...
关键词:数据表格 word 数据表 EXCEL exce 检验报告单 excel 如图所示 检测
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
数据分析师3K + 100 + 100 + 1 + 1 + 1 good question

总评分: 经验 + 100  论坛币 + 100  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

本帖被以下文库推荐

欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

沙发
davil2000 发表于 2012-11-9 10:26:26
Imasasor 发表于 2012-11-9 23:18
上述问题解决了,我用你的方法让它延迟了一会儿。
解决后,又出现错误,提示import时找不到example.xl ...
/*在下面的代码中增加了WINWORD退出机制*/
/*使用前建议重启一下PC*/
options noxwait noxsync;
%macro word2sas(in=, out=);
/*%let in=&fname;*/
/*%let out=example1;*/
%let rc=%sysfunc(system(start winword));
data  _null_;
   null= sleep(5);
run;
filename word DDE 'Winword|System';
data _null_;
file word;
put '[FileOpen.Name = "' "&in" '"]';
put "[EditSelectAll]";
put "[EditCopy]";
put '[FileClose]';
put '[AppMinimize]';
run;
%let rc=%sysfunc(system(start excel));
data  _null_;
   null= sleep(5);
run;
filename excel dde 'excel|system';
data _null_;
file excel;
put '[error(false)]';
put '[paste]';
put '[SAVE.AS("Example.xls")]';
put '[Select.Last.Cell()]';
put '[Copy]';
put '[quit]';
run;
%let rc=%sysfunc(system(taskkill/im winword.exe));
proc import datafile= "Example.xls" out=&out dbms=xls replace;
getnames=no;
mixed=yes;
run;
filename fd "Example.xls";
%let rc=%sysfunc(fdelete(fd));
filename _all_ clear;
%mend word2sas;
/*%word2sas(in=data1.doc, out=example1);*/

%let dirname = D:\Docs;
x "cd &dirname";
filename dirlist pipe "dir /B &dirname\*.doc";
data dirlist ;
     length fname $256;
     infile dirlist length=reclen ;
     input fname $varying256. reclen ;
run;
data _null_;
set dirlist end=last;
if last then call symput('nobs',_n_);
run;
%macro CAL;
%let number=1;
%do %while(&number le &nobs);
  data _null_;
  set dirlist(firstobs=&number obs=&number);
  call symput("fname",trim(fname));
  run;
  %word2sas(in=&fname, out=example1);
  proc datasets library=work nolist;
  append base=all_data data=example1;
  delete example1;
  quit;
%let number=%eval(&number+1);
%end;
%mend ;
%CAL;

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
大数据之魂 + 100 + 5 + 5 + 5 热心帮助其他会员
数据分析师3K + 100 + 100 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 200  论坛币 + 100  学术水平 + 10  热心指数 + 10  信用等级 + 10   查看全部评分

R是万能的,SAS是不可战胜的!

藤椅
luijb 在职认证  发表于 2012-11-9 10:38:22
你这个很简单
思路是先转成excel,然后倒入sas
按照这个思路,你自己试试
已有 1 人评分经验 收起 理由
大数据之魂 + 20 热心帮助其他会员

总评分: 经验 + 20   查看全部评分

西格玛临床统计服务工作室http://www.sigma-stat.com/,luijb@163.com

板凳
luijb 在职认证  发表于 2012-11-9 10:40:01
你这个如果有大批量的要做的话,终极解决办法是开发edc
西格玛临床统计服务工作室http://www.sigma-stat.com/,luijb@163.com

报纸
Imasasor 发表于 2012-11-9 10:46:53
luijb 发表于 2012-11-9 10:38
你这个很简单
思路是先转成excel,然后倒入sas
按照这个思路,你自己试试
如何把word转成excel?
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

地板
davil2000 发表于 2012-11-9 11:00:41
x "cd d:\docs";
%macro word2sas(in=, out=);
/*%let in=data1.doc;*/
/*%let out=example1;*/
options noxwait noxsync;
%let rc=%sysfunc(system(start winword));
filename word DDE 'Winword|System';
data _null_;
file word;
put '[FileOpen.Name = "' "&in" '"]';
put "[EditSelectAll]";
put "[EditCopy]";
put '[FileClose]';
put '[AppMinimize]';
run;
%let rc=%sysfunc(system(start excel));
filename excel dde 'excel|system';
data _null_;
file excel;
put '[error(false)]';
put '[paste]';
put '[SAVE.AS("Example.xls")]';
put '[Select.Last.Cell()]';
put '[Copy]';
put '[quit]';
run;
proc import datafile= "Example.xls" out=&out dbms=xls replace;
getnames=no;
mixed=yes;
run;
filename fd "Example.xls";
%let rc=%sysfunc(fdelete(fd));
filename _all_ clear;
%mend word2sas;

%word2sas(in=data1.doc, out=example1);

data1.doc (24 KB)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
南海游客 + 5 + 5 + 5 观点有启发

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

R是万能的,SAS是不可战胜的!

7
luijb 在职认证  发表于 2012-11-9 11:20:23
好复杂啊,能不能简单些
西格玛临床统计服务工作室http://www.sigma-stat.com/,luijb@163.com

8
slimdell 发表于 2012-11-9 12:42:54
不错,借鉴一下
知乎专栏/微信公号同名:煮酒烹茶读书

9
scarfacetony 发表于 2012-11-9 13:10:49
WORD 另存为TXT可行不?
看了这个视频,我于是有了进股市的信心!
https://bbs.pinggu.org/thread-2787427-1-1.html

10
zkymath 在职认证  发表于 2012-11-9 13:24:43
问题是,你这个word文档当中是只有表格,还是文表(其他图等)混排的,只有表格的话,按照davil2000的试一试啊!
先批量修改文件名(估计原来的文件名就是有规律的),再加个文件名循环就差不多了
已有 1 人评分经验 热心指数 收起 理由
大数据之魂 + 20 + 1 鼓励积极发帖讨论

总评分: 经验 + 20  热心指数 + 1   查看全部评分

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

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