gpt4 book ai didi

sas - 读取 SAS 中分隔文件的特定列

转载 作者:行者123 更新时间:2023-12-04 22:25:14 25 4
gpt4 key购买 nike

这看起来应该很简单,但我在文档中找不到如何做到这一点。我想读一个逗号分隔的文件,但它很宽,我只想读几列。

我以为我可以这样做,但 @ 指针似乎指向文本的列而不是由分隔符定义的列号:

data tmp;
infile 'results.csv' delimiter=',' MISSOVER DSD lrecl=32767 firstobs=2;
@1 id
@5 name$
run;

在此示例中,我想根据分隔符仅读取第 1 列和第 5 列中的内容,但 SAS 正在读取文本文件的位置 1 和位置 5 中的内容。所以如果输入文件的第一行是这样开头的

1234567, "x", "y", "asdf", "bubba", ... more variables ...



我想要 id=1234567name=bubba ,但我得到 name=567, "

我意识到我可以阅读每一列并删除我不想要的那些,但必须有更好的方法。

最佳答案

事实上,@ 确实指向文本列而不是分隔列。我发现的使用标准输入的唯一方法是阅读空白,即

input
id
blank $
blank $
blank $
name $
;

然后放空。

但是,如果您不介意以不同的方式编写输入,则有更好的解决方案。
data tmp;
infile datalines;
input @;
id = scan(_INFILE_,1,',');
name = scan(_INFILE_,5,',');
put _all_;
datalines;
12345,x,y,z,Joe
12346,x,y,z,Bob
;;;;
run;

它使格式化稍微困惑,因为您需要为每个不需要基本字符格式的变量放置或输入语句,但根据您的需要,它可能更容易。

关于sas - 读取 SAS 中分隔文件的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com