2016-04-23 8 views
0

Ich habe einen Wald Grundstück Code unter Verwendung „Pimping your forest plotR: Anordnen von Variablen in Waldstück

I männlich VS weiblichen Unterschied zwischen variablen Untergruppen vergleichen möchte.

Um genauer zu sein, wenn

Variable1: Alter/Subgruppen: Bildung/Subgruppen: 30-39years, 40-49years,

Variable2 50-59years < 9 Jahre, 9-12 Jahre

ich will Sex Unterschied zwischen Variablen wie diese vergleichen, (ich will das Forest Plot-Variablen-Array in dieser Art und Weise)

** Variable1

Untergruppen (männlich)

30-39 Jahre

40-49 Jahre

50-59 Jahre

Untergruppen (weiblich)

30-39 Jahre

40-49 Jahre

50-59 Jahre

Variable2

Untergruppen (male)

< 9 Jahre

9-12 Jahre

Untergruppen (female)

< 9 Jahre

9-12 Jahre

**

Wie soll ich programmieren, um diese Art von Wald Plot zu machen?

Jetzt habe ich ein Waldstück in dieser Variablen Bestellung,

Variable1 30-39 Jahre (männlich)

Variable1 30-39 Jahre (weiblich)

Variable1 40-49 Jahre (männlich)

Variable1 40-49 Jahre (weiblich)

Variable1 50-59 Jahre (männlich)

Variable1 50-59 Jahre (female)

Variable2 < 9 Jahre (male)

Variable2 < 9 Jahre (female)

Variable2 9-12 Jahre (männlich)

Variable2 9 12 Jahre (weiblich)

Mein aktueller Code ist das,

Male<-structure(c(0.22,0.54,2.09,2.65,1.04,1.16,1.15,0.78,1.06,0.99,1.06,0.97,1.00,1.80,0.81), .Dim=c(5L,3L),.Dimnames=list(c("age,30-39years","age,40-49years","age,50-59years" "education,<9 years","education, 9-12 years"),c("OR","L","U"))) 

Female<-structure(c(0.89,1.47,1.08,1.32,1.41,1.38,1.00,27.01,5.15,0.88,0.28,0.96,0.49,0.36,1.61),.Dim=c(17L,3L),.Dimnames=list(c("age, 30-39years","age,40-49years","age,50-59years","education,<9 years","education, 9-12 years"),c("OR","L","U"))) 

library(Gmisc) 

forestplot2(mean=cbind(log(Male[,"OR"]),log(Female[,"OR"])), lower=cbind(log(Male[,"L"]),log(Female[,"L"])),upper=cbind(log(Male[,"U"]),log(Female[,"U"])),labeltext=rownames(Male),legend=c("Male", "Female"),clip=c(-2.5,5.0), boxsize=0.1,col=fpColors(box=c("blue", "darkred")),fn.ci_norm=c("fpDrawNormalCI", "fpDrawCircleCI"),xlab="Hypertension prevalence among sex difference",new_page=TRUE) 

Bitte helfen Sie mir ~ Danke

+0

Bitte setzen Sie 4 Leerzeichen vor jede Codezeile. – surajsn

+0

danke:) !!!!!!!!! – CHAa

Antwort

1

Bitte stellen Sie sicher, dass Ihre Beispieldaten sauber und funktionsfähig sind, bevor Sie buchen. Hier ist eine Lösung, die ich denke, Ihr Problem löst:

Male<-structure(c(0.22,0.54,2.09,2.65,1.04,1.16,1.15,0.78,1.06,0.99,1.06,0.97,1.00,1.80,0.81), 
       .Dim=c(5L,3L), 
       .Dimnames=list(c("age,30-39years","age,40-49years","age,50-59years","education,<9 years","education, 9-12 years"), 
           c("OR","L","U"))) 

Female<-structure(c(0.89,1.47,1.08,1.32,1.41,1.38,1.00,27.01,5.15,0.88,0.28,0.96,0.49,0.36,1.61), 
        .Dim=c(5L,3L), 
        .Dimnames=list(c("age, 30-39years","age,40-49years","age,50-59years","education,<9 years","education, 9-12 years"),c 
           ("OR","L","U"))) 

# Messy input data - something wrong 
for (i in 1:nrow(Male)) { 
    tmp <- Male[i,] 
    low <- which.min(tmp)[1] 
    high <- which.max(tmp)[1] 
    Male[i,] <- c(Male[i,c(-low, -high)], 
       Male[i,low], 
       Male[i,high]) 

    tmp <- Female[i,] 
    low <- which.min(tmp)[1] 
    high <- which.max(tmp)[1] 
    Female[i,] <- c(Female[i,c(-low, -high)], 
       Female[i,low], 
       Female[i,high]) 
} 

library(forestplot) 
library(abind) 
Male <- Gmisc::insertRowAndKeepAttr(Male, 
            grep("education", rownames(Male))[1], 
            rName = "Education") 
Female <- Gmisc::insertRowAndKeepAttr(Female, 
             grep("education", rownames(Female))[1], 
             rName = "Education") 
Male <- Gmisc::insertRowAndKeepAttr(Male, 1, rName = "Age") 
Female <- Gmisc::insertRowAndKeepAttr(Female, 1, rName = "Age") 


out = abind(Male, Female, along = 3) 
rownames(out) <- gsub("(age|education),[ ]*", " ", rownames(out)) 
forestplot(out, 
      xlog = TRUE, 
      legend=c("Male", "Female"), 
      clip=exp(c(-2.5,5.0)), 
      col=fpColors(box=c("blue", "darkred")), 
      fn.ci_norm=c("fpDrawNormalCI", "fpDrawCircleCI"), 
      xlab="Hypertension prevalence among sex difference", 
      new_page=TRUE) 

Gibt das: enter image description here

Beachten Sie, dass der Einfachheit halber ich es füttern ein 3-dim Array. Leider gab es einen Fehler im Paket und Sie müssen die Entwicklungsversion (> 1.5) des Pakets herunterladen.

+0

Ich habe eine andere Frage über kubische Spline geschrieben, könnten Sie mir auch dabei helfen? Vielen Dank. – CHAa

+0

@gkduchl - Wenn Sie mit der Antwort zufrieden sind, markieren Sie diese bitte als Antwort. Ich werde sehen, ob ich die Zeit habe zu erklären, wie das RC funktioniert - es wäre einfacher, wenn Sie ein Beispiel hätten, das ich reproduzieren kann –