2016-05-12 644 views
0

Ich habe eine Frage zum Plotten von Fehlerbalken mit einem wiederholten gemessenen Datensatz. Ich habe der Datensatz wie folgt aus:Wie funktioniert die Funktion "summarySEwithin()" um wiederholte Messdaten zu analysieren?

Food_type Quantity Temperature Time Diameter 
    Food1  High  High  6 0.00100 
    Food1  Medium  High  6 0.00090 
    Food1  Low  High  6 0.00085 
    Food2  High  High  6 0.00100 
    Food2  Medium  High  6 0.00090 
    Food2  Low  High  6 0.00085 
    ... 

ich ein Tier Larven mit verschiedenen Lebensmitteltyp, unterschiedliche Nahrungsmittelkonzentration und Kultur die Larven in verschiedenen Temperatur zugeführt, alle 6 Tage, gemessen ich ihre Größe.

Ich möchte Fehlerbalken dieses Datensatzes plotten, da die Daten wiederholt gemessen werden, muss ich die Funktion "SummarySEwithin()" verwenden, um die Daten zusammenzufassen, bevor ich es plotte. und auch habe ich die Funktion von "SummarySE()" und "normDatawithin()", folgte dem Verfahren (enter link description here)

Hier ist mein Code:

summarySEwithin(data, measurevar = "Diameter", groupvars= c("Quantity","Temperature", "Time"),idvar="quality") 

und ich habe auch versucht, eine Spalte hinzufügen im Datensatz der „Betreff“, und schreiben Sie den Code:

summarySEwithin(Data, measurevar = "Diameter", groupvars= c("Quality","Quantity","Temperature", "Time"),idvar="Subject") 

Sie sind alle haben „nicht verwendete Argument“ Fehler.

Jemand kann mir bei meinem Fall helfen? Jede Antwort wird hoch geschätzt. Danke.

+0

Für diese Art des Zusammenfassens Ich glaube, du bist besser dran mit 'dplyr' oder' data.table', ist es das, was sie sehr gut sind. Aber! 'unbenutztes Argument' bedeutet fast immer, dass Sie einen zusätzlichen Parameter in Ihren Funktionsaufruf aufnehmen, ich würde Ihre Syntax überprüfen. Wenn Sie das Paket plotly oder ggplot2 verwenden, können Sie alternativ Box-Plots erstellen, ohne zuerst Ihre Daten zusammenzufassen. – Shape

Antwort

0

Einige Testdaten:

data <- data.frame(expand.grid(Quality = c('Food1','Food2'), 
          Quantity = c('High', 'Medium', 'Low'), 
          Temperature = c('High','Low'), 
          Time = 1:6, 
          Sample = 1:3)) 
data$Diameter <- runif(NROW(data)) 

dplyr Lösung:

library(dplyr) 
# I'm using standard dev as my measurement of error, but you can use 
# any other definition you want 
plotdata <- 
data %>% 
    group_by(Quality, Quantity, Temperature, Time) %>% 
    summarise(DiameterMean = mean(Diameter), 
      DiameterErr = sd(Diameter)) %>% 
    arrange(Time) 

data.table Lösung:

library(data.table) 
data <- setDT(data) 
plotdata <- data[,.(DiameterMean = mean(Diameter), 
        DiameterErr = sd(Diameter)), 
       by = .(Quality, Quantity, Temperature, Time)][order(Time)] 

nun entweder Grundstück mit plotly oder ggplot2:

library(plotly) 
plot_ly(data = plotdata, 
     y = DiameterMean, 
     x = Time, 
     error_y = list(array = DiameterErr), 
     color = paste0(Quantity,'-', Quality,'-',Temperature)) 

ggplot2:

library(ggplot2) 
ggplot(data = plotdata) + 
    geom_line(aes(x = Time, 
       y = DiameterMean, 
       color = paste0(Quantity,'-', Quality,'-',Temperature))) + 
    geom_errorbar(aes(x = Time, 
        ymin = DiameterMean - DiameterErr, 
        ymax = DiameterMean + DiameterErr, 
        color = paste0(Quantity,'-', Quality,'-',Temperature)))