快来看看PharmaSUG-CN2024都有哪些内容

2024-09-17 12:42:20 浏览数 (4)

先用SAS 来提取Paper的标题,具体代码如下:

代码语言:javascript复制
%macro paper(year=,outTxt=);
proc datasets nolist lib=work memtype=data kill; quit;
filename  fileref  url "https://www.lexjansen.com/cgi-bin/xsl_transform.php?x=pharmasug-cn&year.";
data html;
infile fileref length=len lrecl=32767;
input html_line $varying5000. len;
run;

data split_html;
  length category1 Title Href $500.;
  set html;
  pattern_href_title='s/href="(.*)">(.*)</a><br />/$1/o';
  prx_id=prxparse(pattern_href_title);
  prx_position=prxmatch(prx_id,html_line);
  href=prxposn(prx_id,1,html_line);
  title=prxposn(prx_id,2,html_line);

  if title="" then do;
    pattern_title='s/<span class="code">(.*)</span>(.*)<br />/$1/o';
    prx_id1=prxparse(pattern_title);
    prx_position1=prxmatch(prx_id1,html_line);
    title=prxposn(prx_id1,2,html_line);
  end;

  pattern_category='s/<a id=".*"></a><div class="stream"><span class="stream">(.*)</span></div>/$1/o';
  prx_id2=prxparse(pattern_category);
  prx_position1=prxmatch(prx_id2,html_line);
  category1=prxposn(prx_id2,1,html_line);
  category1=tranwrd(category1,'&amp;','&');
  title=tranwrd(title,'&amp;','&');
run;

data final_paper;
  retain Category;
  set split_html;
  if category1~="" then category=category1;
  if category~="" and title~="";
  keep category title href;
run;

proc export data =final_paper(keep=Title)
    outfile ="D:1.File.Tool10.sas_paper&outTxt..txt"
    dbms =tab
    replace;
run ;
%mend;
%paper(year=2023,outTxt=Paper1);
%paper(year=2024,outTxt=Paper2);

用R语言的wordcloud包来画一下词云图,并和2023年的进行比较。

CN2023

CN2024

CN2023和CN2024独有部分

CN2023和CN2024共有部分

R语言代码参考链接:https://cloud.tencent.com/developer/article/1695559

代码语言:javascript复制
options set=R_HOME='D:Program FilesR-4.2.3';
proc iml;
submit / R;

library(NLP)
library(tm)
library(RColorBrewer)
library(wordcloud)

Paper1<-paste(scan("D:/1.File/0.Tool/10.sas_paper/Paper1.txt", what = character(0),sep = ""), collapse = " ") #读入TXT 文档1
Paper2<-paste(scan("D:/1.File/0.Tool/10.sas_paper/Paper2.txt", what = character(0),sep = ""), collapse = " ") #读入TXT 文档2
tmpText<- data.frame(c(Paper1, Paper2),row.names=c("Text1","Text2"))
df_title <- data.frame(doc_id=row.names(tmpText),
                       text=tmpText$c.Paper1..Paper2.)
ds <- DataframeSource(df_title)
#创建一个数据框格式的数据源,首列是文档id(doc_id),第二列是文档内容
corp <- VCorpus(ds)
#加载文档集中的文本并生成语料库文件
corp<- tm_map(corp,removePunctuation) #清除语料库内的标点符号
corp <- tm_map(corp,PlainTextDocument) #转换为纯文本
corp <- tm_map(corp,removeNumbers) #清除数字符号
corp <- tm_map(corp, function(x){removeWords(x,stopwords())}) #过滤停止词库
term.matrix <- TermDocumentMatrix(corp)
#利用TermDocumentMatrix()函数将处理后的语料库进行断字处理,生成词频权重矩阵

term.matrix <- as.matrix(term.matrix) #频率
colnames(term.matrix) <- c("Paper1","Paper2")
df<-data.frame(term.matrix)
write.csv(df,'D:/1.File/0.Tool/10.sas_paper/term_matrix.csv') #导出两篇文章的频率分析结果

df<-read.csv('D:/1.File/0.Tool/10.sas_paper/term_matrix.csv',header=TRUE,row.names=1)
#图3-9-3(a): 单篇文章Paper1数据的展示
png("D:/1.File/0.Tool/10.sas_paper/Paper1.png")
wordcloud(row.names(df) , df$Paper1 , min.freq=2,col=brewer.pal(8, "Dark2"), rot.per=0.3 )
dev.off()
#图3-9-3(b): 单篇文章Paper2数据的展示
png("D:/1.File/0.Tool/10.sas_paper/Paper2.png")
wordcloud(row.names(df) , df$Paper2 , min.freq=2,col=brewer.pal(8, "Dark2"), rot.per=0.3 )
dev.off()
#两篇文章数据的对比
#图3-9-4(a):两篇文章的独有部分
png("D:/1.File/0.Tool/10.sas_paper/Paper1_Paper2.png")
comparison.cloud(df,max.words=300,random.order=FALSE,colors=c("#00B2FF", "red"))
dev.off()
#图3-9-4(b):两篇文章的共有部分
png("D:/1.File/0.Tool/10.sas_paper/Paper1 and Paper2.png")
commonality.cloud(df,max.words=100,random.order=FALSE,color="#E7298A")
dev.off()
endsubmit;
run;

从数据上来看,许多单词都有同一个词根,目前没有处理,大致上来看都是围绕”临床“”编程“数据”分析“来起标题。

好了,至此,这篇文件也就水完了。

祝大家中秋节快乐!

尊敬的读者,首先感谢您对本篇文章的关注和阅读。在此,本小编想要说明的是,以上所述内容都是经过笔者认真整理和撰写的,但限于个人能力和知识水平等因素,难免存在疏漏或错误之处。如有不当之处,敬请包涵并指正,本小编将虚心接受您的批评与建议,并严谨修正文章。再次感谢您对本篇文章的支持与厚爱。

0 人点赞