[R] How to reconstitute a Product-Outcome table?

francogrex francogrex at mail.com
Mon Nov 5 09:18:59 CET 2007


Hi, my question is technical but maybe a little complicated to express it
well. I have written this small code to calculate a relative risk (RR) of a
Product-Outcome pairs that I am given:
example dataset called test.txt in tab-delimited format:
-------------------------------------------------
Product	Outcome	Count
P.A	O.A	1
P.A	O.D	16
P.B	O.A	7
P.B	O.C	23
P.C	O.B	6
P.C	O.B	25
P.D	O.A	3
P.D	O.O	1
P.E	O.O	31
P.F	O.D	2
P.G	O.C	1
P.G	O.D	1

## The code:
x=read.table(file="test.txt",header=TRUE)
yy=reshape(x,direction="wide",idvar="Product",timevar="Outcome")
dat <- sapply(yy, function(x) {x[is.na(x)] <- 0; x}) 
dat=subset(dat,select=-Product)
ni=apply(dat,1,sum)
nj=as.vector(apply(dat,2,sum))
nij=as.vector(x$Count)
ntot=sum(nij)
pi=ni/ntot
pj=nj/ntot
pij=nij/ntot
mat=cbind(Product=as.vector(x$Product),Outcome=as.vector(x$Outcome))
mat=as.data.frame(mat);mat$pij=pij
zaz=reshape(mat,direction="wide",idvar="Outcome",timevar="Product")
smat<- as.data.frame(sapply(zaz, function(x)
{x[is.na(x)] <- 0; x}) ); 
smat=subset(smat,select=-Outcome)
smat$pj=pj; smat[length(nj)+1,1:length(ni)]=pi; 
result <- matrix(NA,nrow=length(nj),ncol=length(ni))
for(i in 1:length(ni)){
for(j in 1:length(nj)){
result[j,i]=smat[j,i]/(smat[length(nj)+1,i]*smat[j,length(ni)+1])}
}
colnames(result)<-as.vector(unique(x$Product))
rownames(result)<-as.vector(unique(x$Outcome))
result1=ftable(result)
result1=as.data.frame(result1);result1=subset(result1,Freq>0)
names(result1)=c("Outcome","Product", "RR")
result1

##OUTPUT:
   Outcome Product         RR
1      O.A     P.A  0.6256684
2      O.D     P.A  5.7956656
6      O.A     P.B  2.4818182
8      O.C     P.B  3.7375000
14     O.B     P.C 19.5000000
16     O.A     P.D  7.9772727
20     O.O     P.D  0.9140625
25     O.O     P.E  3.6562500
27     O.D     P.F  6.1578947
32     O.D     P.G  3.0789474
33     O.C     P.G  2.4375000
-------------------------------------------

My question now is: Suppose I have only some values of Count and RR:
[example like 2 vectors generated randomly:Count=c(1, 16, 7, 23, 6, 25, 3,
1, 31, 2, 1, 1) and RR=c(0.625668449197861, 5.79566563467492,
2.48181818181818, 3.7375, 19.5, 7.97727272727273, 0.9140625, 3.65625,
6.1578947368421, 3.07894736842105, 2.4375)]
Is there a way to reconstitute the count table as the one called test.txt in
the beginning. I mean to reconstitute Product-Outcome-Count table from just
the two vectors of Count and RR?
Thanks.
-- 
View this message in context: http://www.nabble.com/How-to-reconstitute-a-Product-Outcome-table--tf4750151.html#a13582738
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list