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

SAS使用将一个ID转换为另一个ID的第三个ID合并2个CSV文件,csv,merge,sas,Csv,Merge,Sas,StackOverflow的新特性。非常感谢你回答这个问题。整天都在尝试在SAS中合并文件 我有三个相关文件: (1) 包含需要与CSV文件(2)“ff.CSV”合并的相关数据的CSV文件“all.CSV”。假设all.csv有一个名为id的6位标识符,ff.csv有一个名为ID1的6位标识符。Csv文件编号(3)包含一个与“id”和“ID1”匹配的表 ID1和“id”有1:1的匹配,但是来自ff/ID1的人比我需要的人多(我需要all.csv中的所有人,但只有来自ff.csv的“匹配”all.

StackOverflow的新特性。非常感谢你回答这个问题。整天都在尝试在SAS中合并文件

我有三个相关文件: (1) 包含需要与CSV文件(2)“ff.CSV”合并的相关数据的CSV文件“all.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的人)


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

假设您的第三个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;

请把你试过的贴出来。基于此,您可能需要一个left join x 2。StackOverflow要求您发布一次解决问题的尝试,而不仅仅是一个带有代码请求的问题语句。我试图添加代码,但在格式方面有问题(代码引用没有正确地格式化到列中)。不管怎样,Reeza和Salva都把我带到了那里。非常感谢。