Is there any similar function in R to the first. in SAS? What it dose is: Lets say we have this table: a b c 1 1 5 1 0 2 2 0 2 2 0 NA 2 9 2 3 1 3 and then I want do to do one thing the first time the number 1 appers in a and something else the secund time 1 appers in a and so on. so something similar to: if first.a { a$d<-1 }else{ a$d<-0 } This would give me a b c b 1 1 5 1 1 0 2 0 2 0 2 1 2 0 NA 0 2 9 2 0 3 1 3 1 Is there such a function in R or anything similar? thx //Joel -- View this message in context: http://r.789695.n4.nabble.com/the-first-from-SAS-in-R-tp3055417p3055417.html Sent from the R help mailing list archive at Nabble.com.
Hi all, I'm doing a 3-way ANOVA like this: summary(aov(formula('FP ~ (lum * obj * man)^3 - Error(vp/(lum * obj * man)^3)'),data=dataf)) But in the output I only get 1- and 2-way effects, like this one: Error: vp:obj:man Df Sum Sq Mean Sq F value Pr(>F) obj:man 1 1.5291e-34 1.5291e-34 5.7011 0.0542 . Residuals 6 1.6093e-34 2.6822e-35 --- Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1 (And a warning that the Error() model is singular.) What am I doing wrong so that I don't get the 3-way interactions I want to look at? Thank you! Marius.
Marius think you wanted to do a new post and not reply to mine :P -- View this message in context: http://r.789695.n4.nabble.com/the-first-from-SAS-in-R-tp3055417p3055459.html Sent from the R help mailing list archive at Nabble.com.
Perhaps something like this: a$d <- ifelse(duplicated(a$a), 0, 1) On Tue, Nov 23, 2010 at 1:33 PM, Joel <joda2457 at student.uu.se> wrote:> > Is there any similar function in R to the first. in SAS? > > What it dose is: > > Lets say we have this table: > > ?a b ?c > ?1 1 ?5 > ?1 0 ?2 > ?2 0 ?2 > ?2 0 NA > ?2 9 ?2 > ?3 1 ?3 > > > and then I want do to do one thing the first time the number 1 appers in a > and something else the secund time 1 appers in a and so on. > > so > > something similar to: > > if first.a { > ?a$d<-1 > }else{ > ?a$d<-0 > } > > This would give me > > ?a b ?c b > ?1 1 ?5 1 > ?1 0 ?2 0 > ?2 0 ?2 1 > ?2 0 NA 0 > ?2 9 ?2 0 > ?3 1 ?3 1 > > Is there such a function in R or anything similar? > > > thx > > //Joel > > -- > View this message in context: http://r.789695.n4.nabble.com/the-first-from-SAS-in-R-tp3055417p3055417.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > 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. >
On Nov 23, 2010, at 8:33 AM, Joel wrote:> > Is there any similar function in R to the first. in SAS? > > What it dose is: > > Lets say we have this table: > > a b c > 1 1 5 > 1 0 2 > 2 0 2 > 2 0 NA > 2 9 2 > 3 1 3 > > > and then I want do to do one thing the first time the number 1 > appers in a > and something else the secund time 1 appers in a and so on. > > so > > something similar to: > > if first.a { > a$d<-1 > }else{ > a$d<-0 > } >The duplicated function which returns a logical vector with those features can easily be coerced to numeric. df$d <- as.numeric(!duplicated(df$a)) I was a bit puzzled about my failure to get coercion by the method which I thought was supposed to work, namely adding 0. df$e <- !duplicated(df$a)+0 # does not coerce df$e <- 0 + !duplicated(df$a) # pre-adding 0 does coerce Maybe the rules on coercion were amended. -- David> This would give me > > a b c b > 1 1 5 1 > 1 0 2 0 > 2 0 2 1 > 2 0 NA 0 > 2 9 2 0 > 3 1 3 1 > > Is there such a function in R or anything similar? > > > thx > > //Joel > > -- > View this message in context: http://r.789695.n4.nabble.com/the-first-from-SAS-in-R-tp3055417p3055417.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > 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.David Winsemius, MD West Hartford, CT
On Tue, 23 Nov 2010, Joel wrote:> > Is there any similar function in R to the first. in SAS? > > What it dose is: > > Lets say we have this table: > > a b c > 1 1 5 > 1 0 2 > 2 0 2 > 2 0 NA > 2 9 2 > 3 1 3 > > > and then I want do to do one thing the first time the number 1 appers in a > and something else the secund time 1 appers in a and so on. > > so > > something similar to: > > if first.a { > a$d<-1 > }else{ > a$d<-0 > } > > This would give me > > a b c b > 1 1 5 1 > 1 0 2 0 > 2 0 2 1 > 2 0 NA 0 > 2 9 2 0 > 3 1 3 1 > > Is there such a function in R or anything similar?See ?duplicated then try a$d <- ifelse( duplicated( a$a ), 0 , 1 ) and a$d.2 <- as.numeric( !duplicated( a$a ) ) HTH, Chuck> > > thx > > //Joel > > -- > View this message in context: http://r.789695.n4.nabble.com/the-first-from-SAS-in-R-tp3055417p3055417.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > 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. >Charles C. Berry Dept of Family/Preventive Medicine cberry at tajo.ucsd.edu UC San Diego http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901
Often the purpose of first/last in sas is to facilitate grouping of observations in a sequential algorithm. This purpose is better served in R by using vectorized methods like those in package plyr. Also, note that first/last has different meanings in the context of "by x;" versus "by x notsorted;". R "duplicated" does not address the latter, which splits noncontiguous records with equal x. Regards, David -- View this message in context: http://r.789695.n4.nabble.com/the-first-from-SAS-in-R-tp3055417p3057476.html Sent from the R help mailing list archive at Nabble.com.