当前位置: 首页 > 知识库问答 >
问题:

将CSV文件导入SAS时在INPUT部分使用的格式

阳宾实
2023-03-14

我想得到输入部分中每个变量使用的格式列表。例如,我们有一个csv文件,并手动将数据导入SAS。在代码部分,我们将有如下smth:

DATA WORK.SAS_data_1;
LENGTH
    A                  8
    B                $ 9
    C                  8
    D                  8
    E                  8 ;
FORMAT
    A                BEST1.
    B                $CHAR9.
    C                MMDDYY10.
    D                BEST1.
    E                BEST3. ;
INFORMAT
    A                BEST1.
    B                $CHAR9.
    C                MMDDYY10.
    D                BEST1.
    E                BEST3. ;
INFILE 'C:\Users\AppData\Local\Temp\SEG3592\SAS_data_1-ab6243ce7f064047b5e010c113d2f6a3.txt'
    LRECL=27
    ENCODING="WLATIN1"
    TERMSTR=CRLF
    DLM='7F'x
    MISSOVER
    DSD ;
INPUT
    A                : ?? BEST1.
    B                : $CHAR9.
    C                : ?? MMDDYY9.
    D                : ?? BEST1.
    E                : ?? BEST3. ;
RUN;

我想知道输入部分使用的是什么格式,即:BEST1。只需9美元。对于B,MMDDYY9。对于C等。

我已经找到了总结SASHELP. CARS数据集中每个变量的格式和格式的代码,但是我找不到INPUT部分使用的格式。有人知道在哪里能找到吗?有时(对于数值变量),这些格式可能是不同的。下面是代码:

proc sql noprint ;
create table varlist as
select memname,varnum,name,type,length,format,informat, label
from dictionary.columns
where libname='SASHELP' and memname='CARS'
;
quit;

非常感谢。

共有2个答案

段宏毅
2023-03-14

SAS不需要被告知如何将大多数字符串转换为值。在您的示例中,只有变量C需要使用特殊信息,以便SAS知道如何将文本解释为日期。

可以使用INFORMAT语句将INFORMAT规范附加到数据集中的变量。然而,元数据在SAS中并没有多大用途,除非您仍然在使用PROC FSEDIT。

如果您想存储关于如何格式化文本文件(CSV文件是文本文件)的说明,那么您应该将该信息存储到另一个文档(或数据库)中。或者只是保存SAS程序。

百里沛
2023-03-14

无法恢复用于特定数据集的原始输入代码。如果informats与INFORMAT语句一起使用,那么您可以看到它们(正如您在示例中所做的)。

但是确定数据集是否是这样读取的:

data have;
  input x;
  datalines;
1
2
3
4
5
;;;;
run;

或者像这样:

data have;
  input @1 x 1.;
datalines;
1
2
3
4
5
;;;;
run;

甚至这个:

data have;
  input @1 x 12.;
datalines;
1
2
3
4
5
;;;;
run;

所有这些都将在SAS中完全相同,并具有完全相同的元数据。知道它们是如何输入的唯一方法是访问输入程序并记录它。

 类似资料:
  • 我正在将一个csv文件导入SAS,其中包含一个使用类似于worddatxw的word日期格式的字段。但对于日期后的字母(例如,1而不是1): 我已经走了这么远: 我无法确定如何使用proc import将其导入SAS,同时在SAS内将其转换为可用日期。 我是SAS初学者,所以请使用外行术语。谢谢!:)

  • 我是SAS的新手,我想导入一个csv文件。此文件有一列包含以0开头的字符(例如,或),长度为5个字符。 当我用calc软件打开我的文件时,没有问题。但当我在SAS中导入时: 然后将该列视为数字列,因此删除第一个0。事后更改格式并不能解决我的问题。 是否有一种解决方案可以在读取csv之前指定格式导入,或者只有一种解决方案可以强制将所有列作为字符导入? 非常感谢!

  • 问题内容: 我正在寻找使用导入文件到SQL Server的帮助,我有几个基本问​​题。 问题: CSV文件数据的中间(例如:描述)之间可能有(逗号),那么如何进行导入处理这些数据? 如果客户端从Excel创建CSV,则用逗号括起来的数据(用双引号引起来)(如下例所示),那么导入如何处理呢? 我们如何跟踪某些行是否有不良数据,哪些导入会跳过?(导入会跳过不可导入的行) 这是带有标题的示例CSV: 和

  • 我正在寻找有关使用将文件导入SQL Server的帮助,我没有什么基本问题。 下面是带有头部的示例CSV: 和要导入的SQL语句:

  • 在将excel文件导入SAS时,我发现由于变量格式错误,导入操作不正确。 尝试导入的表如下所示: 我使用的代码如下: 所发生的是“条形码”列已经超过12。因此,ID=4的格式和大小写会得到一个缺少的值('.'),因为它们最初同时包含字符和数字。 因为它是不可能改变一个变量的格式在程序步骤如何才能正确地导入文件,并只使用SAS编辑器? 编辑: 另一个可以完成一半工作并且可能会带来一些启发的选项是通过

  • 我用的是Oracle 10g,SQL Developer我想知道有没有办法从CSV文件导入数据,其中字段用','分隔,行用' \n '结束使用SQL查询我尝试了这个查询 < code >将文件“C:/tmp.csv”中的数据加载到表CSVTEST2字段终止于“,”行终止于“\n”忽略1行(ID,FIRSTNAME,LASTNAME,birth date); 但是它不起作用,我总是从sql开发人员那