gpt4 book ai didi

可变长度的SAS infile杂乱格式

转载 作者:行者123 更新时间:2023-12-02 01:49:58 25 4
gpt4 key购买 nike

我有一个杂乱的文件,其中一些列是制表符分隔的,一些是逗号。

我的数据集问题是读取可变长度的文件

12        Stephen Cole, 33, Columbia, MO
5 Dave Anderson, 25*, Concord, OH

第一列是ID(tab)name(逗号)age(逗号)、active(age后面有星号)、home(tab)

年龄后面的 * 表示他们是否不活跃。

所有名称都从 @19 列开始,但之后的所有内容都是可变长度和列开头。

我想读入我最终得到的格式。

ID   Name           Age  Active     Home
12 Stephen Cole 33 Active Columbia, MO
5 Dave Anderson 25 Inactive Concord, OH

到目前为止我有:

data marathon;
infile 'c:/file.txt' dlm=',' pad firstobs=12;
input @3 ID 3. @19 Name $CHAR13.;

然后我陷入了如何阅读其余部分的困境。我主要对如何阅读年龄旁边的星号作为自己的专栏感到困惑。如果我明白这一点,我想我可以处理剩下的事情。

最佳答案

您有几个问题。首先,您需要使用定界输入,具体来说,您需要将逗号和制表符组合成一组定界符——一种方式如下所示。其次,您有两个重要的领域;带有星号的需要在之后进行解析(我使用 compress 在第一行保留特定的数字,并在第二行保留特定的星号)。您还需要在单独的字段中读取城市/州并将它们组合在一起(我使用 catx)。

data want;
infile "c:\temp\test.dat" dlm='092C'x;
input
id
name :$50.
age_active $
home_city :$25.
home_st $
;
age=input(compress(age_active,,'kd'),best.);
active = ifc(compress(age_active,'*','k')='*','Active','Inactive');
home = catx(', ',home_city,home_st);
run;

注意长度,根据我过去的经验,我建议使用合理的长度,但您很容易看到更长的名称或城市。

关于可变长度的SAS infile杂乱格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23433700/

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