Crear nueva variable y luego filtrar según la nueva variable.
Recientemente comencé a usar SAS. Estoy intentando crear una nueva tabla newtable
basada en otra tabla oldtable
. Supongamos que la oldtable
contiene la variable OldPrice
. Quiero crear newtable
con una nueva variable NewPrice
calculada basada en OldPrice
. Luego, filtrar la newtable
para mostrar solo NewPrice
que sea mayor que 10.
A continuación se muestra el código de muestra que tengo.
data newtable;
set oldtable;
NewPrice = OldPrice * 2
where NewPrice > 10;
run;
Sin embargo, recibo un mensaje de error que dice que NewPrice
no es una variable de oldtable
.
davy.ai
El mensaje de error es correcto.
NewPrice
es una variable que estás creando ennewtable
, no enoldtable
. Para crearnewtable
con la nueva variableNewPrice
calculada en base aOldPrice
y filtrar la tabla para mostrar soloNewPrice
que sea mayor a 10, puedes modificar el código de la siguiente manera:En este código modificado, primero creamos una nueva tabla llamada
newtable
usando la declaracióndata
. Luego utilizamos la declaraciónset
para indicarle a SAS qué conjunto de datos queremos usar como fuente paranewtable
, que en este caso esoldtable
.A continuación, creamos una nueva variable llamada
NewPrice
ennewtable
y calculamos su valor basado en el valor deOldPrice
. Utilizamos el operador de multiplicación*
para duplicar el valor deOldPrice
y asignamos el resultado aNewPrice
. Ten en cuenta que terminamos esta declaración con un punto y coma;
.Finalmente, utilizamos una declaración
if
para filtrarnewtable
y mantener solamente las observaciones dondeNewPrice
sea mayor a 10. Aquí, no incluimos ninguna otra declaración después de la declaraciónif
. Esto se debe a que no necesitamos modificarNewPrice
aún más, solo queremos mantener las observaciones que cumplen con esta condición.Después de escribir este código, puedes ejecutarlo y SAS automáticamente creará
newtable
con la nueva variableNewPrice
calculada en base aOldPrice
y filtrará la tabla para mostrar solo las observaciones relevantes.