附加的列(变量)顺序附加

问题描述 投票:0回答:1

我对SAS很新。

我想附加两个数据集Dataset1和Dataset2

Dataset1中列的顺序是A B C

数据集2中的列顺序是b A c

注意列名称的大小写(大写和小写)

所以,如果我这样做

PROC APPEND BASE=Dataset1 DATA=Dataset2 FORCE;

跑;

是否会以期望的方式发生追加:

A should append to A

B should append to b

C should append to c
sas append
1个回答
3
投票

列的情况和位置都不重要。

列由其名称标识,而不是其位置。

例子可以帮助证明这一点;尝试一次运行以下一步;阅读注释,检查日志并检查数据集:

/* creates data set have1 with columns a (char), b (numeric) then c (numeric) */
data have1;
   length a $ 1;

   input a b c;

   datalines;
1 2 3
4 5 6
7 8 9
;

/* creates data set have2 with columns b (char), a (numeric) then c (numeric) */
data have2;
   length b $ 1;

   input a b c;

   datalines;
1 2 3
4 5 6
7 8 9
;

/* attempts append, but as a & b have different types, missing values result */
proc append base = have1
            data = have2
            force
            ;
run;

/* creates data set have3 with columns a (char), b (numeric) then c (numeric) */
data have3;
   length a $ 1;

   input a b c;

   datalines;
1 2 3
4 5 6
7 8 9
;

/* creates data set have4 with columns b (numeric), a (char) then c (numeric) */
data have4;
   length b   8;
   length a $ 1;

   input a b c;

   datalines;
1 2 3
4 5 6
7 8 9
;

/* Appends successfully as variable types are the same even though order is different. */
/* Columns are identified by their names, not their position.                          */
proc append base = have3
            data = have4
            force
            ;
run;

编辑:回答评论中的问题:

具有相同类型但格式不同。示例num类型但DATE9.格式和其他列有num类型但ddmmyy格式会导致任何问题吗?

变量的格式会影响它的显示方式,基础数据保持不变,因此可以将一个数字列附加到另一个数据列,唯一的区别是附加的数据将与基础数据的格式相同,如@J_Lard在您的问题的第一条评论中指出。

再一次,一个例子可能有助于证明这一点:

/* creates data set have5 with columns a (numeric, formst date9.) and text */
data have5;
   format a date9.;

   input text $char10.;

   a = input(text,ddmmyy10.);

   datalines;
31/07/2018
;

/* creates data set have6 with columns a (numeric, formst ddmmyy.) and text */
data have6;
   format a ddmmyy.;

   input text $char10.;

   a = input(text,ddmmyy10.);

   datalines;
31/07/2018
;

/* appends, but see warning in log about format */
proc append base = have5
            data = have6
            force
            ;
run;

如果您有更多需要回答的问题(创建测试数据然后附加/处理),希望您能看到采取的方法。如果你仍然遇到问题,我会建议你提出一个新问题,如果有相关链接,可以提供其他人运行的测试数据步骤以及你尝试过的任何日志消息的代码。

© www.soinside.com 2019 - 2024. All rights reserved.