SAS合并2个CSV文件,使用第三个将一个ID转换为另一个ID

时间:2017-01-16 23:42:59

标签: csv merge sas

StackOverflow新手。非常感谢您接受这个问题。一整天都试图合并SAS中的文件。

我有三个相关文件: (1)CSV文件" all.csv"需要与CSV文件(2)" ff.csv"合并的相关数据。假设all.csv有一个名为id的6位数标识符,ff.csv有一个名为ID1的6位数标识符。 Csv文件号(3)包含一个匹配" id"的表。到" ID1。"

ID1和" id"有1:1匹配,但来自ff / ID1的人比我需要的人多(我需要来自all.csv的所有人,但只需要来自ff.csv的那些"匹配" all.csv)。

最好的方法是什么?非常感谢。

1 个答案:

答案 0 :(得分:0)

假设您的第三个CSV文件有两列名为id和ID1,我会执行以下操作 1.将所有三个文件转换为SAS数据集 2.使用PROC SQL合并所有三个表。根据您的条件,您需要两个左连接。

proc sql;
    select t1.*, t2.*, t3.*
    from one as t1 
      left join three as t3
        on t1.id = t3.id 
      left join two as t2
        on t2.id1 = t3.id1
quit;

编辑:

如果您运行此代码,您将看到查询有效。

data one;
  length id 3. country $ 32;
  input id country;
  infile datalines dsd;
  datalines;  
1,CANADA
2,FRANCE
3,GERMANY
4,JAPAN
;
run;
data two;
  length id1 3. city $ 32;
  input id1 city;
  infile datalines dsd;
  datalines;
1,BERLIN
2,TOKYO
3,TORONTO
4,MEXICO
5,PARIS
6,MADRID
;
run;  
data three;
    length id 3. id1 3.;
  input id id1;
  infile datalines dsd;
  datalines;
1,3
2,5
3,1
4,2
;
run;  
proc sql;
  select t1.*, t2.*, t3.*
    from one as t1 
      left join three as t3
        on t1.id = t3.id 
      left join two as t2
        on t2.id1 = t3.id1
  ;
quit;