Regarding point 3, as a moderator I have been helping Andrew get this post out to the list over the past week. His previous attempts were encoded in some way that the listserv rejected. He sent me the post via his gmail account and viewing the source I saw it had at least both plain test and HTML an I said it was worth a try to post it. Certainly on my mail client his post displays acceptably with the notice that the HTML alternative was removed. Kevin On 09/29/2017 09:51 AM, Michael Dewey wrote:> You might get better answers if you > > 1 - break this down into separate issues > 2 - tell us what you want to achieve in words rather than SAS, we all > read English but few of us speak SAS > 3 - post in plain text not HTML as HTML mangles your post > > On 29/09/2017 13:47, Andrew Harmon wrote: >> Hello all, >> >> My statistical analysis training up until this point has been >> entirely done >> in SAS. The code I frequently used was: >> >> *Yield Champagin; >> >> data yield; >> >> set stress; >> >> if field='YV' then delete; >> >> if field='HB' then delete; >> >> if barcode='16187DD4015' then delete; >> >> if barcode='16187DD6002' then delete; >> >> if barcode='16187DD2007' then delete; >> >> if barcode='16187DD5016' then delete; >> >> if barcode='16187DD8007' then delete; >> >> if barcode='16187DD7010' then delete; >> >> if barcode='16187DD7007' then delete; >> >> if barcode='16187DD8005' then delete; >> >> if barcode='16187DD6004' then delete; >> >> if barcode='16187DD5008' then delete; >> >> if barcode='16187DD7012' then delete; >> >> if barcode='16187DD6010' then delete; >> >> run; quit; >> >> >> >> Title'2016 Asilomar Stress Relief champagin yield'; >> >> proc mixed method=reml data=yield; >> >> class rep Management Foliar_Fungicide Chemical_Treatment; >> >> model Grain_Yield__Mg_h_ =Management|Foliar_Fungicide|Chemical_Treatment >> Final_Stand__Plants_A_ / outpred=resids residual ddfm=kr; >> >> random rep rep*Management rep*Management*Foliar_Fungicide; >> >> lsmeans Management|Foliar_Fungicide|Chemical_Treatment / pdiff; >> >> ods output diffs=ppp lsmeans=means; >> >> ods listing exclude diffs lsmeans; >> >> run; quit; >> >> %include'C:\Users\harmon12\Desktop\pdmix800.sas'; >> >> %pdmix800(ppp,means,alpha=0.10,sort=yes); >> >> ods graphics off; >> >> run; quit; >> >> proc univariate data=resids normal plot; id Barcode Grain_Yield__Mg_h_ >> pearsonresid; var resid; >> proc print data=resids (obs=3);run; >> >> Can someone please help me convert my code to R? Any help would be much >> appreciated. >> >> >> Thanks, >> >> >> Andrew Harmon >> >> ????[[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> >> --- >> This email has been checked for viruses by AVG. >> http://www.avg.com >> >> >-- Kevin E. Thorpe Head of Biostatistics, Applied Health Research Centre (AHRC) Li Ka Shing Knowledge Institute of St. Michael's Hospital Assistant Professor, Dalla Lana School of Public Health University of Toronto email: kevin.thorpe at utoronto.ca Tel: 416.864.5776 Fax: 416.864.3016
I will offer an opinion, with which others may fairly take issue. If you are coming from SAS and wish to learn R, you should forget about SAS entirely; it is ancient and convoluted. But more to the point, as others have already suggested, you will only confuse and hamstring yourself trying to convert the programming paradigms of one language into another. Better to consider the **tasks** you wish to accomplish and learn how to approach them in the new language. I would add that this especially includes learning about R's varied data structures for which there is no cognate in SAS I think (correction requested if I'm wrong about this). If this is a one-off, just finding a local resource to do the job for you might be the best approach. Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Fri, Sep 29, 2017 at 10:21 AM, Kevin E. Thorpe <kevin.thorpe at utoronto.ca> wrote:> Regarding point 3, as a moderator I have been helping Andrew get this post > out to the list over the past week. His previous attempts were encoded in > some way that the listserv rejected. He sent me the post via his gmail > account and viewing the source I saw it had at least both plain test and > HTML an I said it was worth a try to post it. Certainly on my mail client > his post displays acceptably with the notice that the HTML alternative was > removed. > > Kevin > > On 09/29/2017 09:51 AM, Michael Dewey wrote: > >> You might get better answers if you >> >> 1 - break this down into separate issues >> 2 - tell us what you want to achieve in words rather than SAS, we all >> read English but few of us speak SAS >> 3 - post in plain text not HTML as HTML mangles your post >> >> On 29/09/2017 13:47, Andrew Harmon wrote: >> >>> Hello all, >>> >>> My statistical analysis training up until this point has been entirely >>> done >>> in SAS. The code I frequently used was: >>> >>> *Yield Champagin; >>> >>> data yield; >>> >>> set stress; >>> >>> if field='YV' then delete; >>> >>> if field='HB' then delete; >>> >>> if barcode='16187DD4015' then delete; >>> >>> if barcode='16187DD6002' then delete; >>> >>> if barcode='16187DD2007' then delete; >>> >>> if barcode='16187DD5016' then delete; >>> >>> if barcode='16187DD8007' then delete; >>> >>> if barcode='16187DD7010' then delete; >>> >>> if barcode='16187DD7007' then delete; >>> >>> if barcode='16187DD8005' then delete; >>> >>> if barcode='16187DD6004' then delete; >>> >>> if barcode='16187DD5008' then delete; >>> >>> if barcode='16187DD7012' then delete; >>> >>> if barcode='16187DD6010' then delete; >>> >>> run; quit; >>> >>> >>> >>> Title'2016 Asilomar Stress Relief champagin yield'; >>> >>> proc mixed method=reml data=yield; >>> >>> class rep Management Foliar_Fungicide Chemical_Treatment; >>> >>> model Grain_Yield__Mg_h_ =Management|Foliar_Fungicide|Chemical_Treatment >>> Final_Stand__Plants_A_ / outpred=resids residual ddfm=kr; >>> >>> random rep rep*Management rep*Management*Foliar_Fungicide; >>> >>> lsmeans Management|Foliar_Fungicide|Chemical_Treatment / pdiff; >>> >>> ods output diffs=ppp lsmeans=means; >>> >>> ods listing exclude diffs lsmeans; >>> >>> run; quit; >>> >>> %include'C:\Users\harmon12\Desktop\pdmix800.sas'; >>> >>> %pdmix800(ppp,means,alpha=0.10,sort=yes); >>> >>> ods graphics off; >>> >>> run; quit; >>> >>> proc univariate data=resids normal plot; id Barcode Grain_Yield__Mg_h_ >>> pearsonresid; var resid; >>> proc print data=resids (obs=3);run; >>> >>> Can someone please help me convert my code to R? Any help would be much >>> appreciated. >>> >>> >>> Thanks, >>> >>> >>> Andrew Harmon >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide http://www.R-project.org/posti >>> ng-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >>> >>> --- >>> This email has been checked for viruses by AVG. >>> http://www.avg.com >>> >>> >>> >> > -- > Kevin E. Thorpe > Head of Biostatistics, Applied Health Research Centre (AHRC) > Li Ka Shing Knowledge Institute of St. Michael's Hospital > Assistant Professor, Dalla Lana School of Public Health > University of Toronto > email: kevin.thorpe at utoronto.ca Tel: 416.864.5776 Fax: 416.864.3016 > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posti > ng-guide.html > and provide commented, minimal, self-contained, reproducible code.[[alternative HTML version deleted]]
I wish to second this approach to learning R. I tried for several years to translate other stat programs or provide parallel analyses with R. This dabbling-in-R approach did not work . When a transferred to a research unit that could ill afford commercial software, I devoted my entire time to doing everything in R. This was a difficult learning process, but I eventually became proficient in R. The conceptual paradigm for R is only marginally commensurate with that of standard statistical software. You must immerse yourself in R to become proficient. Good luck, Joe Bert Gunter <bgunter.4567 at gmail.com> Sent by: "R-help" <r-help-bounces at r-project.org> 09/29/2017 02:09 PM To "Kevin E. Thorpe" <kevin.thorpe at utoronto.ca>, cc R-help <r-help at r-project.org>, Andrew Harmon <andrewharmon42 at gmail.com> Subject Re: [R] Converting SAS Code I will offer an opinion, with which others may fairly take issue. If you are coming from SAS and wish to learn R, you should forget about SAS entirely; it is ancient and convoluted. But more to the point, as others have already suggested, you will only confuse and hamstring yourself trying to convert the programming paradigms of one language into another. Better to consider the **tasks** you wish to accomplish and learn how to approach them in the new language. I would add that this especially includes learning about R's varied data structures for which there is no cognate in SAS I think (correction requested if I'm wrong about this). If this is a one-off, just finding a local resource to do the job for you might be the best approach. Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Fri, Sep 29, 2017 at 10:21 AM, Kevin E. Thorpe <kevin.thorpe at utoronto.ca> wrote:> Regarding point 3, as a moderator I have been helping Andrew get thispost> out to the list over the past week. His previous attempts were encodedin> some way that the listserv rejected. He sent me the post via his gmail > account and viewing the source I saw it had at least both plain test and > HTML an I said it was worth a try to post it. Certainly on my mailclient> his post displays acceptably with the notice that the HTML alternativewas> removed. > > Kevin > > On 09/29/2017 09:51 AM, Michael Dewey wrote: > >> You might get better answers if you >> >> 1 - break this down into separate issues >> 2 - tell us what you want to achieve in words rather than SAS, we all >> read English but few of us speak SAS >> 3 - post in plain text not HTML as HTML mangles your post >> >> On 29/09/2017 13:47, Andrew Harmon wrote: >> >>> Hello all, >>> >>> My statistical analysis training up until this point has been entirely >>> done >>> in SAS. The code I frequently used was: >>> >>> *Yield Champagin; >>> >>> data yield; >>> >>> set stress; >>> >>> if field='YV' then delete; >>> >>> if field='HB' then delete; >>> >>> if barcode='16187DD4015' then delete; >>> >>> if barcode='16187DD6002' then delete; >>> >>> if barcode='16187DD2007' then delete; >>> >>> if barcode='16187DD5016' then delete; >>> >>> if barcode='16187DD8007' then delete; >>> >>> if barcode='16187DD7010' then delete; >>> >>> if barcode='16187DD7007' then delete; >>> >>> if barcode='16187DD8005' then delete; >>> >>> if barcode='16187DD6004' then delete; >>> >>> if barcode='16187DD5008' then delete; >>> >>> if barcode='16187DD7012' then delete; >>> >>> if barcode='16187DD6010' then delete; >>> >>> run; quit; >>> >>> >>> >>> Title'2016 Asilomar Stress Relief champagin yield'; >>> >>> proc mixed method=reml data=yield; >>> >>> class rep Management Foliar_Fungicide Chemical_Treatment; >>> >>> model Grain_Yield__Mg_h_=Management|Foliar_Fungicide|Chemical_Treatment>>> Final_Stand__Plants_A_ / outpred=resids residual ddfm=kr; >>> >>> random rep rep*Management rep*Management*Foliar_Fungicide; >>> >>> lsmeans Management|Foliar_Fungicide|Chemical_Treatment / pdiff; >>> >>> ods output diffs=ppp lsmeans=means; >>> >>> ods listing exclude diffs lsmeans; >>> >>> run; quit; >>> >>> %include'C:\Users\harmon12\Desktop\pdmix800.sas'; >>> >>> %pdmix800(ppp,means,alpha=0.10,sort=yes); >>> >>> ods graphics off; >>> >>> run; quit; >>> >>> proc univariate data=resids normal plot; id Barcode Grain_Yield__Mg_h_ >>> pearsonresid; var resid; >>> proc print data=resids (obs=3);run; >>> >>> Can someone please help me convert my code to R? Any help would bemuch>>> appreciated. >>> >>> >>> Thanks, >>> >>> >>> Andrew Harmon >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide http://www.R-project.org/posti >>> ng-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >>> >>> --- >>> This email has been checked for viruses by AVG. >>> http://www.avg.com >>> >>> >>> >> > -- > Kevin E. Thorpe > Head of Biostatistics, Applied Health Research Centre (AHRC) > Li Ka Shing Knowledge Institute of St. Michael's Hospital > Assistant Professor, Dalla Lana School of Public Health > University of Toronto > email: kevin.thorpe at utoronto.ca Tel: 416.864.5776 Fax: 416.864.3016 > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posti > ng-guide.html > and provide commented, minimal, self-contained, reproducible code.[[alternative HTML version deleted]] ______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]]
All HTML emails have a plain text part along with the HTML part... but it is usually invisible to the author and is automatically generated by the email composing software and some software is better than others at that job (by a lot). However, without a doubt, sending the email in text form at least means the sender saw the plain text part before it was sent, which removes a potentially huge barrier to communication. And GMail definitely can send plain text. -- Sent from my phone. Please excuse my brevity. On September 29, 2017 10:21:50 AM PDT, "Kevin E. Thorpe" <kevin.thorpe at utoronto.ca> wrote:>Regarding point 3, as a moderator I have been helping Andrew get this >post out to the list over the past week. His previous attempts were >encoded in some way that the listserv rejected. He sent me the post via > >his gmail account and viewing the source I saw it had at least both >plain test and HTML an I said it was worth a try to post it. Certainly >on my mail client his post displays acceptably with the notice that the > >HTML alternative was removed. > >Kevin > >On 09/29/2017 09:51 AM, Michael Dewey wrote: >> You might get better answers if you >> >> 1 - break this down into separate issues >> 2 - tell us what you want to achieve in words rather than SAS, we all > >> read English but few of us speak SAS >> 3 - post in plain text not HTML as HTML mangles your post >> >> On 29/09/2017 13:47, Andrew Harmon wrote: >>> Hello all, >>> >>> My statistical analysis training up until this point has been >>> entirely done >>> in SAS. The code I frequently used was: >>> >>> *Yield Champagin; >>> >>> data yield; >>> >>> set stress; >>> >>> if field='YV' then delete; >>> >>> if field='HB' then delete; >>> >>> if barcode='16187DD4015' then delete; >>> >>> if barcode='16187DD6002' then delete; >>> >>> if barcode='16187DD2007' then delete; >>> >>> if barcode='16187DD5016' then delete; >>> >>> if barcode='16187DD8007' then delete; >>> >>> if barcode='16187DD7010' then delete; >>> >>> if barcode='16187DD7007' then delete; >>> >>> if barcode='16187DD8005' then delete; >>> >>> if barcode='16187DD6004' then delete; >>> >>> if barcode='16187DD5008' then delete; >>> >>> if barcode='16187DD7012' then delete; >>> >>> if barcode='16187DD6010' then delete; >>> >>> run; quit; >>> >>> >>> >>> Title'2016 Asilomar Stress Relief champagin yield'; >>> >>> proc mixed method=reml data=yield; >>> >>> class rep Management Foliar_Fungicide Chemical_Treatment; >>> >>> model Grain_Yield__Mg_h_ >=Management|Foliar_Fungicide|Chemical_Treatment >>> Final_Stand__Plants_A_ / outpred=resids residual ddfm=kr; >>> >>> random rep rep*Management rep*Management*Foliar_Fungicide; >>> >>> lsmeans Management|Foliar_Fungicide|Chemical_Treatment / pdiff; >>> >>> ods output diffs=ppp lsmeans=means; >>> >>> ods listing exclude diffs lsmeans; >>> >>> run; quit; >>> >>> %include'C:\Users\harmon12\Desktop\pdmix800.sas'; >>> >>> %pdmix800(ppp,means,alpha=0.10,sort=yes); >>> >>> ods graphics off; >>> >>> run; quit; >>> >>> proc univariate data=resids normal plot; id Barcode >Grain_Yield__Mg_h_ >>> pearsonresid; var resid; >>> proc print data=resids (obs=3);run; >>> >>> Can someone please help me convert my code to R? Any help would be >much >>> appreciated. >>> >>> >>> Thanks, >>> >>> >>> Andrew Harmon >>> >>> ????[[alternative HTML version deleted]] >>> >>> ______________________________________________ >>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide >>> http://www.R-project.org/posting-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >>> >>> --- >>> This email has been checked for viruses by AVG. >>> http://www.avg.com >>> >>> >> > >-- >Kevin E. Thorpe >Head of Biostatistics, Applied Health Research Centre (AHRC) >Li Ka Shing Knowledge Institute of St. Michael's Hospital >Assistant Professor, Dalla Lana School of Public Health >University of Toronto >email: kevin.thorpe at utoronto.ca Tel: 416.864.5776 Fax: 416.864.3016 > >______________________________________________ >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code.
Hi, I would echo Bert's comments below. The last thing that you want to try to do is to convert SAS code to R code on a "line for line" basis. The programming paradigm of R, which is built upon vectorized operations, takes a "whole object" approach for efficiency. SAS does not, since it is generally based upon 1970's era, main frame style, programming techniques using macros, etc. If this is not a one off and something that you might find yourself doing with some frequency, you might consider investing in Bob Muenchen's book, R for SAS and SPSS Users: https://www.amazon.com/gp/product/1461406846/ <https://www.amazon.com/gp/product/1461406846/> While it is now a few years old, it is still relevant in terms of pointing you in the direction of basic and conceptual linkages between the languages. Regards, Marc Schwartz> On Sep 29, 2017, at 2:09 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote: > > I will offer an opinion, with which others may fairly take issue. > > If you are coming from SAS and wish to learn R, you should forget about SAS > entirely; it is ancient and convoluted. But more to the point, as others > have already suggested, you will only confuse and hamstring yourself trying > to convert the programming paradigms of one language into another. Better > to consider the **tasks** you wish to accomplish and learn how to approach > them in the new language. I would add that this especially includes > learning about R's varied data structures for which there is no cognate in > SAS I think (correction requested if I'm wrong about this). > > If this is a one-off, just finding a local resource to do the job for you > might be the best approach. > > Cheers, > Bert > > > > > > Bert Gunter > > "The trouble with having an open mind is that people keep coming along and > sticking things into it." > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > On Fri, Sep 29, 2017 at 10:21 AM, Kevin E. Thorpe <kevin.thorpe at utoronto.ca> > wrote: > >> Regarding point 3, as a moderator I have been helping Andrew get this post >> out to the list over the past week. His previous attempts were encoded in >> some way that the listserv rejected. He sent me the post via his gmail >> account and viewing the source I saw it had at least both plain test and >> HTML an I said it was worth a try to post it. Certainly on my mail client >> his post displays acceptably with the notice that the HTML alternative was >> removed. >> >> Kevin >> >> On 09/29/2017 09:51 AM, Michael Dewey wrote: >> >>> You might get better answers if you >>> >>> 1 - break this down into separate issues >>> 2 - tell us what you want to achieve in words rather than SAS, we all >>> read English but few of us speak SAS >>> 3 - post in plain text not HTML as HTML mangles your post >>> >>> On 29/09/2017 13:47, Andrew Harmon wrote: >>> >>>> Hello all, >>>> >>>> My statistical analysis training up until this point has been entirely >>>> done >>>> in SAS. The code I frequently used was: >>>> >>>> *Yield Champagin; >>>> >>>> data yield; >>>> >>>> set stress; >>>> >>>> if field='YV' then delete; >>>> >>>> if field='HB' then delete; >>>> >>>> if barcode='16187DD4015' then delete; >>>> >>>> if barcode='16187DD6002' then delete; >>>> >>>> if barcode='16187DD2007' then delete; >>>> >>>> if barcode='16187DD5016' then delete; >>>> >>>> if barcode='16187DD8007' then delete; >>>> >>>> if barcode='16187DD7010' then delete; >>>> >>>> if barcode='16187DD7007' then delete; >>>> >>>> if barcode='16187DD8005' then delete; >>>> >>>> if barcode='16187DD6004' then delete; >>>> >>>> if barcode='16187DD5008' then delete; >>>> >>>> if barcode='16187DD7012' then delete; >>>> >>>> if barcode='16187DD6010' then delete; >>>> >>>> run; quit; >>>> >>>> >>>> >>>> Title'2016 Asilomar Stress Relief champagin yield'; >>>> >>>> proc mixed method=reml data=yield; >>>> >>>> class rep Management Foliar_Fungicide Chemical_Treatment; >>>> >>>> model Grain_Yield__Mg_h_ =Management|Foliar_Fungicide|Chemical_Treatment >>>> Final_Stand__Plants_A_ / outpred=resids residual ddfm=kr; >>>> >>>> random rep rep*Management rep*Management*Foliar_Fungicide; >>>> >>>> lsmeans Management|Foliar_Fungicide|Chemical_Treatment / pdiff; >>>> >>>> ods output diffs=ppp lsmeans=means; >>>> >>>> ods listing exclude diffs lsmeans; >>>> >>>> run; quit; >>>> >>>> %include'C:\Users\harmon12\Desktop\pdmix800.sas'; >>>> >>>> %pdmix800(ppp,means,alpha=0.10,sort=yes); >>>> >>>> ods graphics off; >>>> >>>> run; quit; >>>> >>>> proc univariate data=resids normal plot; id Barcode Grain_Yield__Mg_h_ >>>> pearsonresid; var resid; >>>> proc print data=resids (obs=3);run; >>>> >>>> Can someone please help me convert my code to R? Any help would be much >>>> appreciated. >>>> >>>> >>>> Thanks, >>>> >>>> >>>> Andrew Harmon >>>> >>>> [[alternative HTML version deleted]][[alternative HTML version deleted]]