[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