Ich habe einen Datenrahmen (Anzahl der Fehler in MS Office über mehrere Jahre), mit dem ich erfolgreich ein marktfähiges generiere:
df_Office_final_sparktable component faults time Excel 2 2001 Excel 1 2002 Excel 5 2003 Excel 5 2004 Excel 5 2005 Excel 6 2006 Excel 0 2007 Excel 0 2008 Excel 0 2009 Excel 0 2010 Excel 0 2011 Excel 0 2012 PPT 1 2001 PPT 1 2002 PPT 1 2003 PPT 1 2004 PPT 2 2005 PPT 3 2006 PPT 0 2007 PPT 0 2008 PPT 0 2009 PPT 0 2010 PPT 0 2011 PPT 0 2012 Word 5 2001 Word 4 2002 Word 3 2003 Word 1 2004 Word 3 2005 Word 2 2006 Word 5 2007 Word 3 2008 Word 0 2009 Word 1 2010 Word 0 2011 Word 0 2012
</ pre></ code> Hier ist der entsprechende Code:
Office_content<-list(
2001=function(x) { head(x,1) }, 2012=function(x) { tail(x,1) }, Office_content[["Office Trend"]]<-newSparkLine()) Office_varType<-rep("outages",3) df_Office_final_sparktable<-df_Office_final_sparktable[,c("component","faults","time")] df_Office_final_sparktable$time<-as.numeric(as.character(df_Office_final_sparktable$time)) Office_dat<-reshapeExt(df_Office_final_sparktable,idvar="component",varying=list(2)) Office_sparkTab<-newSparkTable(Office_dat,Office_content,Office_varType) showSparkTable (Office_sparkTab , outputType = "html", filename = "t1")
</ pre></ code> Wie Sie sehen, kann ich eine Tabelle der ausgebenFehler 2001 und 2012 mit den Befehlen head und einer entsprechenden Sparkline. Ich kann jedoch nicht herausfinden, wie die Fehlersummen von 2002 - 2011 (einschließlich) ausgegeben werden sollen. Ich habe versucht, die zweite Zeile mit dem folgenden Code aus dem Datenrahmen zu ziehen:
df_Office_final_sparktable[2:2, 1:3]
</ pre></ code> Mir ist klar, dass dies nicht richtig ist, da es keinen Weg gibtDamit ich diesen Befehl wieder auf eine Funktion abbilden kann, habe ich mich gefragt, ob ich 10 separate Funktionen schreiben muss, die ich aufrufen muss, um die erforderlichen Fehlersummen für jede Bürokomponente Jahr für Jahr abzurufen.
Danke im Voraus, Jonathan
Antworten:
0 für die Antwort № 1Ok, ich habe es endlich herausgefunden. Ich musste 10 Funktionen erstellen, die die 2. Zeile wie folgt aus dem Datenrahmen ziehen:
head_row2_Office <- function(x) { result <- subset(x, time =="2002" & component =="Excel", select=c(1:3)) return (result) }
</ pre></ code> Danach musste ich die Funktionen in der Listenfunktion wie folgt aufrufen:
Office_content<-list( Jan=function(x) { head(x,1) }, Feb=function(x) { head_row2_Office(x) }, Mar=function(x) { head_row3_Office(x) }, Apr=function(x) { head_row4_Office(x) }, May=function(x) { head_row5_Office(x) }, Jun=function(x) { head_row6_Office(x) }, Jul=function(x) { head_row7_Office(x) }, Aug=function(x) { head_row8_Office(x) }, Sep=function(x) { head_row9_Office(x) }, Oct=function(x) { head_row10_Office(x) }, Nov=function(x) { head_row11_Office(x) }, Dec=function(x) { tail(x,1) }, Office_content[["Office Trend"]]<-newSparkLine() ) Office_varType<-rep("outages",13) # set the tables columns to 13 for table + graph df_Office_final_sparktable<-df_Office_final_sparktable[,c("component","faults","time")] df_Office_final_sparktable$time<-as.numeric(as.character(df_Office_final_sparktable$time)) Office_dat<-reshapeExt(df_Office_final_sparktable,idvar="component",varying=list(2)) Office_sparkTab<-newSparkTable(Office_dat,Office_content,Office_varType) showSparkTable (Office_sparkTab , outputType = "html", filename = "t1")
</ pre></ code>