Pas besoin de vous excuser. SAS est un processus de réflexion très différent qui demande beaucoup de pratique. Vous posez toutes les bonnes questions.
SAS est un langage itératif. Le tableau de nombres dont vous parlez ressemble à de nombreuses observations individuelles dans un ensemble de données. SAS effectue des opérations sur les valeurs une ligne à la fois dans chaque ensemble de données, puis passe à la ligne suivante dès qu'elle atteint le bas d'une étape de données.
En supposant que votre ensemble de données ressemble à ceci:
var
1
2
3
4
Si vous vouliez carré chaque numéro, vous devez créer une nouvelle variable (ou vous pouvez remplacer la variable actuelle, votre choix) et utiliser l'opérateur exposant **
.
data want;
set have;
var_squared = var**2;
run;
Dans cette étape, SAS crée un ensemble de données want
, lit le jeu de données have
, crée une nouvelle variable numérique de longueur 8 du nom var_squared
, attribue une valeur de var*var
, puis les sorties. Il répète le cycle lecture-calcul-écriture pour chaque ligne jusqu'à ce qu'il atteigne la fin du marqueur de fichier. Notez que output
est implicite automatiquement. Lorsque vous ne spécifiez pas output
, SAS écrit automatiquement dans le nouveau jeu de données dès qu'il atteint run
.
Votre nouvel ensemble de données ressemblera à ceci:
var var_squared
1 1
2 4
3 9
4 16
Je comprends que j'aurais dû dire "range" au lieu de "array". – Mhoram
@ La réponse de Stu ci-dessous est correcte. Si vous êtes en IML et que vous essayez Mat ** 2, alors vous essayez une multiplication matricielle (Mat x Mat ou Mat au carré). Vous vouliez un élément, dont l'opérateur est #. Alors Mat ## 2 fera un élément de puissance sage. – DomPazz