2015-11-05 77 views
0

我說得對,爲了向現有SAS數據集添加新列,我在proc sql中使用了Alter Table語句(並且爲了填充新列,Update語句)?如果是這樣,proc iml中的等價語句是什麼(或者甚至可以在IML中完成)?SAS IML等價於Alter Table和Update

+0

IML實際上並沒有'數據集'的概念,它有一個矩陣。你能發表一個你問什麼的例子嗎?而且,現在你問的問題不止一個。您是否具體詢問IML問題,其餘問題僅僅是無關的信息? – Joe

+0

個人而言,我不會使用ALTER表和Update來向表中添加變量。我將創建一個包含我想從舊錶中獲得的變量併合並或計算新變量的新表。在IML中,我會做同樣的事情。通過將舊矩陣與具有兼容維度的新矩陣連接起來,製作一個新矩陣。 – Tom

+0

如何確保將新表格中的值連接起來與舊數據集中的相應值對齊? – Mhoram

回答

0

這聽起來像你問關於橫向聯合。如果兩個矩陣的行數相同,則可以使用連接運算符(||)將一個矩陣的列附加到另一個矩陣的列。例如,以下語句將2x1矢量連接到2x3矩陣。結果是一個2×4矩陣:

proc iml; 
x = {1 2 3, 
    4 5 6}; 
y = {7, 8}; 
z = x || y; 
print z; 

注意,但是,這在分配x和y矩陣的內容的新矩陣(z)和複印件。因此,它不如從開始創建4x2矩陣,然後使用subscrits來填充列。有關詳細信息,請參見文章"Friends don't let friends concatenate results inside a loop."

+0

我想要做的是將1列矩陣的內容寫入現有數據集的新列中。有沒有在IML中這樣做的方法(例如,新內容與數據集現有列中的相應值排成一行)? – Mhoram

+0

在SAS中,您需要創建一個新的數據集。您無法將變量添加到現有數據集。 – Rick