2017-11-25 111 views
-1

我有一个excel文件,我想将文本分成SAS中的不同列。 在它看起来像这样在同一列中的文件,我想拆它,摆脱引号:SAS编程,从一个文件中读取并分离到不同的列中

ID;"City";"Year" 
1;"New york";NULL 
2;"stockton";"18" 

这就是我试图做的:

data work.project ;      
infile "&path\users.csv" delimiter=';' missover dsd; 
input ID: $30. 
     City: $200. 
     Year: $5. ; 

run; 

proc print data=work.project; 
run; 

我的输出:

观测数据ID市创

1 ,,, “ID ”“ 城” “”“年
2 ,,,”1“”new york“”NULL“
3 ,,,”2“”stockton“”“”18“
4 ,,,”3“”moscow“”“ NULL“

+0

您的问题标题说Excel,但问题中的代码读取.csv。这是什么?请显示您从示例代码中获得的输出,并描述它是如何出错的。代码似乎为我工作得很好。 – Quentin

+0

是的,你说得对,它是一个.csv文件!我现在在我的问题中添加输出。我想摆脱引用...我尝试使用例如$ quote200。,但后来我失去了价值 – lih

+2

我会仔细检查您的文件。或者从这个问题中将你的示例文件粘贴到一个新的csv中,然后从这个问题中运行你的代码。我的SAS数据集中没有引号或附加逗号。在Windows上运行。 – Quentin

回答

0

而不是INPUT语句中的冒号和格式使用INFORMAT语句。

data work.project; 
    infile datalines4 delimiter=';' truncover dsd; 
    informat id $30. city $200. year $4.; 
    input ID City Year; 
    datalines4; 
1;"New York";NULL 
2;"Stockton";"18" 
;;;; 
run; 

proc print data=project; 
run; 
+0

SAS不需要使用INFORMAT来读取字符变量。如果要定义变量,请使用LENGTH语句。 – Tom

相关问题