[R] Applying some equations over all unique combinations of 4 variables
John Kane
jrkrideau at yahoo.ca
Fri Mar 9 20:24:26 CET 2007
I just realised after posting I have two vectors of
the wrong length. The corrected program is:
#dataset
cata <- c( 1,1,6,1,1,2)
catb <- c( 1,2,3,4,5,6)
doga <- c(3,5,3,6,4, 0)
data1 <- data.frame(cata, catb, doga)
rm(cata,catb,doga)
data1
# start rates
# names for lists
fnams <- c("af", "pf", "cf", "mf")
mnams <- c("am", "pm", "cm", "mm")
# Current layout of the rate data frames
alphahill <- list(af <- c("a1","a2","a3"), pf <-
c("d1","d2","d3"),
cf <- c("f1","f2"), mf <- c("h1","h2"))
names(alphahill) <- fnams
betahill <- list(am <- c("b1","b2","b3"), pm<-
c("e1","e2","e3"),
cm <- c("g1","g2"), mm <- c("j1", "j2"))
names(betahill) <- mnams
hilltop <- list(af <- data.frame(a1 <- 1:4 , a2 <-
2:5, a3 <- 3:6),
pf <- data.frame(d1 <- 4:1, d2 <- 5:2,
d3 <- 6:3),
cf <- data.frame(f1 <- 1:4, f2 <-
3:6),
mf <- data.frame(h1 <- 1:4, h2 <-
3:6))
hilldown <- list(am <- data.frame(b1 <- 4:1, b2 <-
5:2, b3 <- 6:3),
pm <- data.frame(e1 <- 4:1, e2 <-
1:4,e3 <- 6:3),
cm <- data.frame (g1 <- 4:1, g2 <-
1:4),
mm <- data.frame(j1 <- 1:4, j2 <-
4:1))
names(hilltop) <- fnams
names(hilldown) <- mnams
for (i in 1:4) {
names(hilltop[[i]]) <- alphahill[[i]]
names(hilldown[[i]]) <- betahill[[i]]
}
rm(a1,a2,a3,b1,b2,b3,d1,d2,d3,e1,e2,e3,f1,f2,g1,g2,h1,h2,j1,j2,
fnams, mnams,
af, am,cf,cm,mf, mm,pf, pm)
--- John Kane <jrkrideau at yahoo.ca> wrote:
> #I have a data set that looks like this. A bit
> more
> complicated actually with
> # three factor levels but these calculations need to
> be done on one factor at a
> #I then have a set of different rates that are
> applied
> #to it.
>
> #dataset
> cata <- c( 1,1,6,1,1,2)
> catb <- c( 1,2,3,4,5,6)
> doga <- c(3,5,3,6,4, 0)
>
> data1 <- data.frame(cata, catb, doga)
> rm(cata,catb,doga)
> data1
>
> # start rates
> # names for lists
> fnams <- c("af", "pf", "cf", "mf")
> mnams <- c("am", "pm", "cm", "mm")
>
> # Current layout of the rate data frames
> alphahill <- list(af <- c("a1","a2","a3"), pf <-
> c("d1","d2","d3"),
> cf <- c("f1","f2"), mf <-
> c("h1","h2"))
> names(alphahill) <- fnams
>
> betahill <- list(am <- c("b1","b2","b3"), pm<-
> c("e1","e2","e3"),
> cm <- c("g1","g2"), mm <- c("j1",
> "j2"))
> names(betahill) <- mnams
>
> hilltop <- list(af <- data.frame(a1 <- 1:4 , a2 <-
> 2:5, a3 <- 3:6),
> pf <- data.frame(d1 <- 4:1, d2 <-
> 5:2,
> d3 <- 6:3),
> cf <- data.frame(f1 <- 1:4, f2 <-
> 3:6),
> mf <- data.frame(h1 <- 1:4, h2 <-
> 2:5))
>
> hilldown <- list(am <- data.frame(b1 <- 4:1, b2 <-
> 5:2, b3 <- 6:3),
> pm <- data.frame(e1 <- 5:1, e2 <-
> 1:5,e3 <- 6:2),
> cm <- data.frame (g1 <- 5:1, g2 <-
> 1:5),
> mm <- data.frame(j1 <- 1:4, j2 <-
> 5:2))
> names(hilltop) <- fnams
> names(hilldown) <- mnams
> for (i in 1:4) {
> names(hilltop[[i]]) <- alphahill[[i]]
> names(hilldown[[i]]) <- betahill[[i]]
> }
>
>
rm(a1,a2,a3,b1,b2,b3,d1,d2,d3,e1,e2,e3,f1,f2,g1,g2,h1,h2,j1,j2,
> fnams, mnams,
> af, am,cf,cm,mf, mm,pf, pm)
> # Now that's out of the way
>
> #Assuming I am reading this problem correctly I
> should
> have
> #648 possible combinations for each row of data
> that
> is:
> #unique combinations where I need
> # (af*am) * (pf*pm) * (cf*cm) * mf * mm
> # ie (3*3) * (3* 3) * (2*2) * 2*2)
> # based on the idea that there are 9 unique
> combination for af & am and so
> # on.
>
> # af am
> # 1 a1 b1
> # 2 a2 b1
> # 3 a3 b1
> # 4 a1 b2
> # 5 a2 b2
> # 6 a3 b2
> # 7 a1 b3
> # 8 a2 b3
> # 9 a3 b3
>
> # I have a set of equations of the form :
>
> # P1 <- af*cata + pf*catb^cf + mf*doga
> # S1 <- am*cata + pm*catb^cm + mm*doga
>
> #Is there any way that I can do something like this
> and keep track of
> #what condition is what since I need to be able to
> sum
> the P1s and P2, for
> # for each combination (or a subset of them) ? I
> suspect it may be a fairly
> # straight-forward "apply " problem but I am having
> a
> real problem with it.
>
> # I am only likely to need to report, perhaps. 15
> combinations but at the
> # moment Idon't see any easy way to do them and
> doing
> all possible outcomes and
> # extracting the required ones looks like a better
> and
> safer approach if it can
> # be done.And will save a lot of time if we suddenly
> need a few new comparisons.
>
> # Any help would be greatly appreciated.
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
>
More information about the R-help
mailing list