我试图从CSV文件中读取排序数据,并且我遇到了涉及长字符串的问题。我附上了部分SAS输出和原始数据集的屏幕截图。 (该数据集来自Kaggle,关于Ted Talks。)
我遇到变量"标签"时遇到问题。基本上,我希望阅读标签并相应地对数据进行排序(即提及儿童或教育的标签将被纳入教育类别)。到目前为止,我仍然坚持阅读它们。任何帮助,将不胜感激!
到目前为止,这是我的代码:
data tedtalks;
infile 'O:\ted_main1.csv' dlm = ',' firstobs = 2;
informat name $80.;
informat main_speaker $20.;
informat speaker_occupation $60.;
informat title $80.;
input comments duration event $ film_date languages
main_speaker $ name $ num_speaker published_date
speaker_occupation $ tags $ title $ views
;
run;
proc print data=tedtalks;
run;
CSV数据的前几行:
comments duration event film_date languages main_speaker name num_speaker published_date speaker_occupation tags title views
4553 1164 TED2006 1140825600 60 Ken Robinson Ken Robinson: Do schools kill creativity? 1 1151367060 Author/educator ['children', 'creativity', 'culture', 'dance', 'education', 'parenting', 'teaching'] Do schools kill creativity? 47227110
265 977 TED2006 1140825600 43 Al Gore Al Gore: Averting the climate crisis 1 1151367060 Climate advocate ['alternative energy', 'cars', 'climate change', 'culture', 'environment', 'global issues', 'science', 'sustainability', 'technology'] Averting the climate crisis 3200520
124 1286 TED2006 1140739200 26 David Pogue David Pogue: Simplicity sells 1 1151367060 Technology columnist ['computers', 'entertainment', 'interface design', 'media', 'music', 'performance', 'simplicity', 'software', 'technology'] Simplicity sells 1636292
200 1116 TED2006 1140912000 35 Majora Carter Majora Carter: Greening the ghetto 1 1151367060 Activist for environmental justice ['MacArthur grant', 'activism', 'business', 'cities', 'environment', 'green', 'inequality', 'politics', 'pollution'] Greening the ghetto 1697550
答案 0 :(得分:0)
如果您有分隔文件,那么您可能希望在INFILE语句中使用DSD选项。还要确保使用正确的分隔符。 INFORMAT语句不用于定义变量,而是用于附加有助于SAS知道如何从文本中读取变量的指令。 SAS已经知道如何读取字符变量,因此无需附加$ xx。 informats。而是使用LENGTH或ATTRIB语句来定义变量。
32,767是您制作角色变量的最长时间。确保将LRECL设置得足够长。
data tedtalks;
infile 'O:\ted_main1.csv' dsd dlm='09'x firstobs=2 truncover lrecl=100000;
length comments 8 duration 8 event $20 film_date languages 8
main_speaker $100 name $200 num_speaker 8
published_date 8 speaker_occupation $100
tags $32767 title $200 views 8
;
input comments -- views ;
run;
不确定这些日期的格式,但也许您可以将它们转换为日期。
标签看起来是JSON类型列表。使用标签来“分类”数据会很困难,但很容易使用它们来过滤数据。您可以保留它们并使用INDEXW()或FIND()等函数进行搜索。您可以使用SCAN()函数将它们解析为多个变量或多个观察值。