Sas 如何读取线人数据:1亿至1亿美元
数据集包括一系列数字:Sas 如何读取线人数据:1亿至1亿美元,sas,informat,Sas,Informat,数据集包括一系列数字: $1,000.1M $100.5M $1,002.3M $23.4M $120.3M 我想在SAS中将变量作为数字读取 结果应该是: Money(millions) 1000.1 100.5 1002.3 23.4 120.3 我使用COMMAw.d读取此数据,但无法运行 代码是: input Money(millions) COMMA9.1; run; 如何修改它
$1,000.1M
$100.5M
$1,002.3M
$23.4M
$120.3M
我想在SAS中将变量作为数字读取
结果应该是:
Money(millions)
1000.1
100.5
1002.3
23.4
120.3
我使用COMMAw.d读取此数据,但无法运行
代码是:
input Money(millions) COMMA9.1;
run;
如何修改它
非常感谢!信息不需要像“M”这样的字母,它只删除逗号、空格、美元符号、百分号、破折号和右括号。
只需删除所有不需要的字符,即可将原始字符串转换为包含数字的字符串:
data input;
length moneyRaw $200;
infile datalines;
input moneyRaw $;
datalines;
$1,000.1M
$100.5M
$1,002.3M
$23.4M
$120.3M
;
run;
data result;
set input;
* "k" modifier inverts the removed characters;
money = input(compress(moneyRaw,"0123456789.","k"),best.);
run;
或者,如果您了解regex,您可以为将来阅读它的任何人添加一些有趣的代码:
data resultPrx;
set input;
moneyUpdated = prxChange("s/^\$(\d+(,\d+)*(\.\d+)?)M$/$1/",1,strip(moneyRaw));
money = input(compress(moneyUpdated,','),best.);
run;
我认为你最好把它当作一个角色来读,然后按照德米特里的回答来处理。但是如果它是一个单列,那么如果你将分隔符设置为M,你就可以读取它。我怀疑这在演示中会起作用,但在你的整个过程中不会起作用
data input;
informat moneyRaw dollar8.;
infile datalines dlm='M';
input moneyRaw ;
*moneyRaw = moneyRaw * (1000000);
format moneyRaw dollar32.;
datalines;
$1,000.1M
$100.5M
$1,002.3M
$23.4M
$120.3M
;
run;
所有的数字都是百万吗?或者有可能有一个B或者有一个不是百万的数字吗?是的,都是百万。我以前不知道压缩函数,这是我第一次学习SAS。谢谢你的帮助!非常感谢。那么,是否没有办法将这些数据作为数字直接读取?