R Markdown SAS куски кода с proc sql не работает должным образом - PullRequest
1 голос
/ 26 марта 2019

Я использую R Markdown для создания учебника по SAS proc sql, но я обнаружил несколько случаев, когда куски кода с proc sql не работают должным образом.

Во-первых, опции outobs = N и inobs = N не будут оцениваться и приведут к этой ошибке:

Error in engine(options) : Calls: <Anonymous> ... process_group.block -> call_block -> block_exec -> in_dir -> engine
In addition: Warning message: In system2(cmd, code, stdout=TRUE, stderr= TRUE, eng = options$engine.env): running command '"C:/Program Files/SASHome/SASFoundation/9.4/sas.exe" sas3afc64d1332b.sas -nosplash -ls 75' had status 1

Далее, сопоставление не работает в кусках кода sql proc. Я пробовал подзапрос и полное соединение безуспешно в R Markdown, в то время как тот же код работает в базовой SAS.

Воспроизводимый код:

require(knitr)
require(SASmarkdown)
saspath <- "C:/Program Files/SASHome/SASFoundation/9.4/sas.exe"
sasopts <- "-nosplash -ls 75"

/*filter with a subquery*/
data roster;
    input Person $;
    datalines;
    Tiffany 
    Tiffany 
    Barbara
    Henry 
    Carol
    Jane 
    Tiffany 
    Ronald 
    Thomas
    William
    William
    Henry 
    Carol
    Carol
    Ronald 
    Thomas
;

proc sql;
title "Subquery";
    select *
    from sashelp.class
    where Name in 
        (select distinct Person
        from roster);
quit;

proc sql;
title "Full join";
     select *
     from sashelp.class a full join roster b
     on a.Name = b.Person;
quit;

Для вышеприведенного подзапроса результаты журнала в R Markdown говорят, что ни одна строка не была выбрана. Результаты полного объединения:

##            Name      Sex       Age    Height    Weight  Person
##            -----------------------------------------------------
##                                  .         .         .   Barbara
##                                  .         .         .   Carol  
##                                  .         .         .   Carol  
##                                  .         .         .   Carol  
##                                  .         .         .   Henry  
##                                  .         .         .   Henry  
##                                  .         .         .   Jane   
##                                  .         .         .   Ronald 
##                                  .         .         .   Ronald 
##                                  .         .         .   Thomas 
##                                  .         .         .   Thomas 
##                                  .         .         .   Tiffany
##                                  .         .         .   Tiffany
##                                  .         .         .   Tiffany
##                                  .         .         .   William
##                                  .         .         .   William
##            Alfred    M          14        69     112.5          
##            Alice     F          13      56.5        84          
##            Barbara   F          13      65.3        98          
##            Carol     F          14      62.8     102.5          
##            Henry     M          14      63.5     102.5          
##            James     M          12      57.3        83          
##            Jane      F          12      59.8      84.5          
##            Janet     F          15      62.5     112.5          
##            Jeffrey   M          13      62.5        84          
##            John      M          12        59      99.5          
##            Joyce     F          11      51.3      50.5          
##            Judy      F          14      64.3        90          
##            Louise    F          12      56.3        77          
##            Mary      F          15      66.5       112          
##            Philip    M          16        72       150          
##            Robert    M          12      64.8       128          
##            Ronald    M          15        67       133          
##            Thomas    M          11      57.5        85          
##            William   M          15      66.5       112

Так что похоже, что proc sql просто не соответствует столбцам Name / Person? Я попробовал функцию strip (), чтобы убедиться, что пробелы не являются проблемой.

Опять же, если я запускаю эти фрагменты кода в SAS, подзапрос и соединение работают без проблем. Заранее благодарим за понимание того, почему этот код не работает должным образом!

...