2016-01-24 84 views
1

我還有一個更快的問題。我現在有一個相當大的數據集,如下所示:SAS:轉換轉置或SQL?

Rank Count Score 
1  100 10 
Romeo & Juliet . . 
Shakespeare . . 

我需要以某種方式維持軍隊,計數和分(1,100,10)和的名稱創建一個新列書和作者的另一列。

SAS中有這樣做的好方法嗎?我畫空白,任何幫助將不勝感激。謝謝!

+0

你的數據結構是沒有意義的。 –

+0

進一步解釋你的問題。是說大數據集是文本文件還是當前的SAS數據集?你有什麼,你想要它看起來像什麼? – Reeza

+0

這就是我收到的數據的樣子,以及爲什麼我需要以如下方式進行轉換: 排名計分分數標題作者 Reeza - 數據是一個csv,我將其導入到SAS中以製作成數據集我實際上可以使用。 – conniffac

回答

1

首先,在我給出答案之前,獲得具體答案的關鍵是要求提供一個精確而詳細的問題。

從你的不精確的問題和評論,我想我拼湊你的問題。事實上,這是我過去遇到過的。

您在評論中說,數據是在csv文件中,但您的示例似乎顯示您嘗試導入後的數據。從您的描述中,單一觀察分佈在csv的3行數據中。我假設數據看起來像這樣(我做了第二個OBS):

1,100,10 
Romeo & Juliet 
Shakespeare 
2,90,9 
The Old Man and the Sea 
Hemingway 

這裏的數據步讀取文件的結構。

data books; 
infile '/folders/myfolders/books.csv' dlm=',' n=3 truncover; 
input rank score count #2 book $50. #3 author $30.; 
run; 

首先,讓我解釋infile聲明中的選項。選項n=3指定在輸入緩衝區中有3行輸入數據可用,這些輸入數據對應於組成單個obs所需的行數。我們將在input聲明中利用此選項。選項truncover可確保SAS不會繼續讀取超出行尾的變量值小於指定長度的變量。例如,這個選項允許我爲書名分配50個字符長度的信息,即使書名比這個短很多。

讓我們繼續討論input聲明。由於每個3線組的第一行都是標準的,逗號分隔的數據,因此讀取排名,得分和計數無需特殊。 #2表示告訴SAS轉移到三線組的第二行來閱讀書名。當然,#3將行指針移動到3行組的最後一行以讀取最終的變量作者。

下面是最終輸出的樣子:

enter image description here