Supongamos que tengo dos conjuntos de datos,

--Table 1--      --Table 2--
ID  Amount       ID  Amount1 Code
A01   0.1        A01  0.3     x
A02   0.2        A02  0.2     y
A02   0.3        A03  0.4     g 
A03   0.4        A03  0.5     u
A05   0.6        B01  0.1     k

Estoy tratando de crear un nuevo conjunto de datos (Tabla 3) por unirse a la Tabla 1 y la Tabla 2.
La intención de resultado final debería parecerse a esto:

--Table 3--
ID  Amount  Amount1  Code
A01   0.1     .       .
A01   .       0.3     x
A02   0.2     0.2     y
A02   0.3     .       .
A03   0.4     0.4     g
A05   0.6     .       .
B01   .       0.1     k

donde la tabla se unió basado en la IDENTIFICACIÓN con la cantidad y amount1 comparado al mismo tiempo.
He intentado utilizar PROC SQL JOIN pero los resultados parecen ser un poco raro.
Gracias.

  • Son Tabla1 y Tabla2 grande?
  • Sí, la Tabla 1 y la Tabla 2 son cada uno alrededor de 5 gb de tamaño.
InformationsquelleAutor saspower | 2014-12-22

2 Comentarios

  1. 6

    La única cosa que puede no ser evidente para un usuario novato es la necesidad de hacer confluir() en Id.

    proc sql;
    create table joined as
    select coalesce(a.ID, b.ID) as ID, a.Amount, b.Amount1, b.Code
    from Table1 a
    full join Table2 b
    on a.ID = b.ID;
    quit;
    

    De todos modos, SAS manera de hacer esto es la combinación de las dos tablas. Si usted tiene las tablas pre-ordenados o tienen índice de IDs, este sería también más eficiente:

    data merged;
    merge table1 table2;
    by ID;
    run;
    
    • Usted necesita para unirse a un.cantidad = b.amount1 además para obtener el resultado deseado
    • Gracias vasja y Keith! Esto es lo que tengo para que mi código final 🙂
    • Una vez que esté satisfecho con la respuesta, reconociendo que pudiera incitar a que el Proveedor de la Solución, también sería decirle a los demás que la consulta ya ha sido resloved!!
  2. 0

    El siguiente código produce un resultado muy cerca de el resultado que estábamos pidiendo, aunque yo no podía entender por qué la «u» se establece que falta en su solicitud de conjunto de datos.

        proc sql;
          create table joined as
          select coalesce(a.ID, b.ID) as ID, a.Amount, b.Amount, b.Code
          from Table1 a natural full join Table2(rename=(amount1=amount)) b
           ;
        quit;
    

Dejar respuesta

Please enter your comment!
Please enter your name here