如何从一个SAS数据集中选择与另一个SAS数据集中至少一个值匹配的所有行
我试图从一个CSV文件中读取100只股票/ETF的股票代码名。我有两个CSV文件,一个包含90天内所有股票/ETF的数据。第二个包含我感兴趣选择的100个股票/etf股票报价器的名称。下面是我的代码,WORK.ETFnames是一列数据集,其中包含我想从fulldata中选择的100个ETF名称。如何使用此名称列表正确选择所需数据。在WORK.FULLdata中,名称存储在名为“Ticker”的列中。我已经按类型(ETF或股票)对数据进行了排序,但不知道如何从这些表中选择我真正感兴趣的行。谢谢大家!如何从一个SAS数据集中选择与另一个SAS数据集中至少一个值匹配的所有行,sas,Sas,我试图从一个CSV文件中读取100只股票/ETF的股票代码名。我有两个CSV文件,一个包含90天内所有股票/ETF的数据。第二个包含我感兴趣选择的100个股票/etf股票报价器的名称。下面是我的代码,WORK.ETFnames是一列数据集,其中包含我想从fulldata中选择的100个ETF名称。如何使用此名称列表正确选择所需数据。在WORK.FULLdata中,名称存储在名为“Ticker”的列中。我已经按类型(ETF或股票)对数据进行了排序,但不知道如何从这些表中选择我真正感兴趣的行。谢谢大
PROC IMPORT OUT=WORK.Fulldata
DATAFILE="/folders/myshortcuts/myfolder/q2_2012_all.csv"
DBMS=CSV REPLACE;
GETNAMES=YES;
DATAROW=2;
RUN;
PROC IMPORT OUT = WORK.ETFnames
DATAFILE = "/folders/myshortcuts/myfolder/ETFs.csv"
DBMS=CSV REPLACE;
GETNAMES=YES;
DATAROW=2;
RUN;
PROC SQL;
CREATE TABLE stocks AS
SELECT *
from Fulldata
where Security EQ "Stock";
QUIT;
PROC SQL;
CREATE TABLE ETF AS
SELECT *
from Fulldata
where Security EQ "ETF"
QUIT;
您可能希望尝试合并这两个数据集,并且只接受具有匹配“Ticker”值的数据集。我将假设dataset ETFnames的名称也存储在变量“Ticker”下
据我所知,这将给你期望的结果。您也可以在PROC-SQL语句中执行join而不是MERGE,但是在IMO中编写MERGE更容易。谢谢,非常有效。我是SAS的新手,这帮了我很大的忙。
PROC IMPORT OUT= WORK.Fulldata
DATAFILE= "/folders/myshortcuts/myfolder/q2_2012_all.csv"
DBMS=CSV REPLACE;
GETNAMES=YES;
DATAROW=2;
RUN;
PROC IMPORT OUT= WORK.ETFnames
DATAFILE= "/folders/myshortcuts/myfolder/ETFs.csv"
DBMS=CSV REPLACE;
GETNAMES=YES;
DATAROW=2;
RUN;
PROC SORT DATA=WORK.Fulldata OUT=WORK.Fulldatasort;
BY Ticker;
RUN;
PROC SORT DATA=WORK.EFTnames OUT=WORK.EFTnamessort;
BY Ticker;
RUN;
DATA WORK.Partdata;
MERGE WORK.Fulldatasort WORK.EFTnamessort(in=A);
BY Ticker;
IF A;
RUN;
PROC SQL;
CREATE TABLE stocks AS
SELECT *
from Partdata
Where Security EQ "Stock";
QUIT;
PROC SQL;
CREATE TABLE ETF AS
SELECT *
from Partdata
Where Security EQ "ETF"
QUIT;