Sas 匹配合并导致连接数据
我试图通过变量“country”匹配合并两个数据集。两个数据集都包含变量country(一个名为“name”,但改为country)和其他变量,一个数据集(data1)包含大陆信息。然而,我遇到了SAS只是连接数据集的问题,也就是说,将它们堆叠在另一个之上 我已经尝试了一些基本方法,按照相同的by变量对数据集进行排序,并确保在合并数据集时使用by语句Sas 匹配合并导致连接数据,sas,Sas,我试图通过变量“country”匹配合并两个数据集。两个数据集都包含变量country(一个名为“name”,但改为country)和其他变量,一个数据集(data1)包含大陆信息。然而,我遇到了SAS只是连接数据集的问题,也就是说,将它们堆叠在另一个之上 我已经尝试了一些基本方法,按照相同的by变量对数据集进行排序,并确保在合并数据集时使用by语句 proc sort data=data1; by name; run; proc sort data=data2; by country; ru
proc sort data=data1;
by name;
run;
proc sort data=data2;
by country;
run;
data merged_data;
length continent $ 20 country $ 200;
merge data1(rename=(name=country)) data2;
by country;
run;
这段代码的结果是数据集彼此叠加在一起。我的目标是把大陆与国家联系起来
data1:
Continent Name
Asia China
Australia New Zealand
Europe France
data2:
Country Var City
China 1.2 Beijing, China
New Zealand 3.5 Auckland, New Zealand
France 2.8 Paris, France
data I want:
Country Var City Continent
China 1.2 Beijing, China Asia
New Zealand 3.5 Auckland, New Zealand Australia
France 2.8 Paris, France Europe
data I get:
Country Var City Continent
China 1.2 Beijing, China
New Zealand 3.5 Auckland, New Zealand
France 2.8 Paris, France
China Asia
New Zealand Australia
France Europe
从我的示例数据来看,您的逻辑适用于我。也许你的错误与你的
length
语句有关
Data Df1;
INPUT Country $1-18 @19 Temp;
datalines;
United States 87
Canada 68
Mexico 88
Russia 77
China 55
;
Run;
Data Df2;
INPUT name $1-18 @19 season $;
datalines;
United States Summer
Canada Summer
Mexico Summer
Russia Winter
China Winter
;
Run;
Proc sort data=Df1;
by Country;
Proc sort data= Df2;
by Name;
Run;
Data Merged_data;
merge Df1 Df2(rename=(name=country));
by country;
Run;
确保变量的值是您认为的值。使用$QUOTE打印值。总体安排使用固定长度字体查看结果。等等 可能其中一个有您看到的实际值,而另一个有一个代码,该代码通过一种格式解码为您看到的值 如果不是格式化值与实际值之间的问题,那么数据2中的记录可能有前导空格 此程序生成您正在显示的结果。如果从DATA2中的COUNTRY中删除前导空格,则合并将按预期进行
data data1 ;
input Continent $13. Name $15.;
cards;
Asia China
Australia New Zealand
Europe France
;
data data2;
input Country $15. Var City $25.;
country=' '||country;
cards;
China 1.2 Beijing, China
New Zealand 3.5 Auckland, New Zealand
France 2.8 Paris, France
;
proc sort data=data1; by name; run;
proc sort data=data2; by country; run;
data want ;
merge data2 data1(rename=(name=country)) ;
by country;
run;
结果:
Obs Country Var City Continent
1 China 1.2 Beijing, China
2 France 2.8 Paris, France
3 New Zealand 3.5 Auckland, New Zealand
4 China . Asia
5 France . Europe
6 New Zealand . Australia
哪个数据集具有可变的大陆?不应该两者兼而有之。举例说明您认为应该匹配但SAS不匹配的国家/地区和名称的某些值。情况是一样的吗?有前导空格吗?其他不可见字符?只有一个数据集具有可变字符。我已经更新了我的问题,以显示我的数据集示例。