我还有一个问题。我目前有一个相当大的数据集,如下所示:
Rank Count Score
1 100 10
Romeo & Juliet . .
Shakespeare . .
我需要以某种方式维护排名,计数和分数(1,100,10),并为该书的名称和作者的另一列创建一个新列。
在SAS中有一个很好的方法吗?我正在画一个空白,任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
首先,在我给出答案之前,获得具体答案的关键是提出一个精确而详细的问题。
从你不精确的问题和评论中,我想我拼凑了你的问题。事实上,这是我过去遇到过的。
您在评论中说,数据位于csv文件中,但您的示例似乎在尝试导入后显示数据。根据您的描述,单个观察点分布在csv中的3行数据中。我假设数据看起来像是这样(我组成了第二个障碍物):
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行组的第2行以阅读书名。当然,#3
将行指针移动到3行组的最后一行,以读取最终变量作者。
这是最终输出的样子: