Skip to content
Prev 320604 / 398506 Next

if clause in data frame

HI,

I am not sure I understand it correctly.
Should this (m1*x1/m1) +n1*y1/n1) /(m1+n1) be (x1+y1)/(m1+n1)?


final<-data.frame()
?? for (m1 in 4:10) {
?????? for (n1 in 4:10){? 
?????????? for (x1 in 0: m1) {
????????????? for (y1 in 0: n1) {

final<- rbind(final,c(m1,n1,x1,y1))
}}}}

colnames(final)<- c("m1","n1","x1","y1")

?final1<- within(final,{flag<- as.numeric((x1/m1)>(y1/n1));p11<-ifelse(flag==1, (x1+y1)/(m1+n1),x1/m1);p12<- ifelse(flag==1,(x1+y1)/(m1+n1),y1/n1)})

If you meant four new variables p11, p12, P11, P12,
then:
finalNew<-within(final,{flag<- as.numeric((x1/m1)>(y1/n1))})


lst1<-lapply(split(finalNew,finalNew$flag),function(x) {xNew<-x;if(all(xNew$flag==0)) within(xNew,{P11<-x1/m1;P12<- y1/n1}) else within(xNew,{p11<- (x1+y1)/(m1+n1); p12<- p11})})


library(plyr)

join_all(lst1,type="full")

head(join_all(lst1,type="full"))
#? m1 n1 x1 y1 flag? P12? P11 p12 p11
#1? 4? 4? 0? 0??? 0 0.00 0.00? NA? NA
#2? 4? 4? 0? 1??? 0 0.25 0.00? NA? NA
#3? 4? 4? 0? 2??? 0 0.50 0.00? NA? NA
#4? 4? 4? 0? 3??? 0 0.75 0.00? NA? NA
#5? 4? 4? 0? 4??? 0 1.00 0.00? NA? NA
#6? 4? 4? 1? 1??? 0 0.25 0.25? NA? NA



A.K.
Message-ID: <1364618119.93001.YahooMailNeo@web142602.mail.bf1.yahoo.com>
In-Reply-To: <CACexUkvPUtqYALLhy8WJDNPcMiS18tocp9XtrZ3dCGVbz1VYCw@mail.gmail.com>