楼主: hshizhi1982
4556 3

[其他] 批量导CSV文件到SAS,同时避免数据使用科学计数法 [推广有奖]

  • 0关注
  • 0粉丝

大专生

91%

还不是VIP/贵宾

-

威望
0
论坛币
23 个
通用积分
0.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
218 点
帖子
36
精华
0
在线时间
50 小时
注册时间
2015-3-25
最后登录
2023-12-14

楼主
hshizhi1982 发表于 2015-12-5 23:05:28 |AI写论文
5论坛币
求救一个问题:文件夹'E:\temp'下有64个CSV文件,如下图所示:
,每个CSV文件中有个字段如图所示,采用的是科学计数法,如果用proc import 导入到SAS中,数据集中存的会是科学计数法的数值。如下图:
.问题:如果是一个文件使用SAS EG导入数据即可解决该问题,问题是使用PROC IMPORT如何解决产生科学计数法的问题?论坛不能上传CSV格式的文件,只好传XLSX格式的文件。
附件: 你需要登录才可以下载或查看附件。没有帐号?我要注册

最佳答案

squirrelel 查看完整内容

如果正确理解了你的问题,批量导入可以用pipe把所有文件名存成一个SAS dataset,然后在data step里先读入这个dataset,再在infile statement用filevar来打开需要读取的文件,这样每一个loop都会读取相应的文件,同时可以自定每个变量的格式。 以下来自 Introduction to SAS. UCLA: Statistical Consulting Group. from http://www.ats.ucla.edu/stat/sas/faq/multi_file_read.htm (accessed December 5, 2015). %let dir ...
关键词:科学计数法 计数法 import Port 如图所示 import 文件夹 如图所示 如何

沙发
squirrelel 发表于 2015-12-5 23:05:29
如果正确理解了你的问题,批量导入可以用pipe把所有文件名存成一个SAS dataset,然后在data step里先读入这个dataset,再在infile statement用filevar来打开需要读取的文件,这样每一个loop都会读取相应的文件,同时可以自定每个变量的格式。

以下来自
Introduction to SAS.  UCLA: Statistical Consulting Group.
from http://www.ats.ucla.edu/stat/sas/faq/multi_file_read.htm (accessed December 5, 2015).

%let dirname = c:\work\raw_data_files;
filename DIRLIST pipe "dir /B &dirname\*.txt";

data dirlist ;
     length fname $256;
     infile dirlist length=reclen ;
     input fname $varying256. reclen ;
run;
proc print data = dirlist;
run;

***
Obs    fname

  1    file01.txt
  2    file3.txt
  3    file7.txt

***

data all_text (drop=fname);
  length myfilename $100;
  length name $25;
  set dirlist;
  filepath = "&dirname\"||fname;
  infile dummy filevar = filepath length=reclen end=done missover;
  do while(not done);
    myfilename = filepath;
    input name $  x1 x2 x3;  
    output;
  end;
run;
proc print data=all_text;
run;

***

Obs            myfilename                    name      x1     x2    x3
  1    C:\work\raw_data_files\file01.txt    John       12    354     7
  2    C:\work\raw_data_files\file01.txt    Carl       43    657     9
  3    C:\work\raw_data_files\file01.txt    Mary      343      7     9
  4    C:\work\raw_data_files\file3.txt     adam       12    354     7
  5    C:\work\raw_data_files\file3.txt     brad       43    657     9
  6    C:\work\raw_data_files\file3.txt     tyler     343      7     9
  7    C:\work\raw_data_files\file7.txt     mary      343     56     2
  8    C:\work\raw_data_files\file7.txt     robert    243     67     8
  9    C:\work\raw_data_files\file7.txt     brad       43    657     9
10    C:\work\raw_data_files\file7.txt     tyler     343      7     9

***
已有 1 人评分论坛币 收起 理由
giresse + 40 热心帮助其他会员

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

藤椅
hshizhi1982 发表于 2015-12-5 23:06:34
这个是用PROC import的方法
proc import datafile='E:\temp\test_10.csv'
        out        =work.test_10
        DBMS=csv REPLACE;
RUN;

板凳
hshizhi1982 发表于 2015-12-19 20:21:56
楼上提供的链接http://www.ats.ucla.edu/stat/sas/faq/multi_file_read.htm,有个问题导出的文件都有同样的数据结构,我这问题是每个excel文件的表结构都不一样。说白了,这几个CSV是从数据库不同的表导出来的数据,现在要批量导入到SAS中。

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

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-20 06:05