Ich bin ein Anfänger in R. Ich versuche, die zwischen Gruppenvarianz mit dem folgenden Code zu berechnen.Mittelwertberechnung mit data.frame in R
calcBetweenGroupsVariance <- function(variable,groupvariable)
{
# find out how many values the group variable can take
groupvariable2 <- as.factor(groupvariable[[1]])
levels <- levels(groupvariable2)
numlevels <- length(levels)
# calculate the overall grand mean:
grandmean <- mean(variable)
# get the mean and standard deviation for each group:
numtotal <- 0
denomtotal <- 0
for (i in 1:numlevels)
{
leveli <- levels[i]
levelidata <- variable[groupvariable==leveli,]
levelilength <- length(levelidata)
# get the mean and standard deviation for group i:
meani <- mean(levelidata)
sdi <- sd(levelidata)
numi <- levelilength * ((meani - grandmean)^2)
denomi <- levelilength
numtotal <- numtotal + numi
denomtotal <- denomtotal + denomi
}
# calculate the between-groups variance
Vb <- numtotal/(numlevels - 1)
Vb <- Vb[[1]]
return(Vb)
}
Allerdings erhalte ich die folgende Fehlermeldung während der Verwendung dieser Funktion
calcBetweenGroupsVariance (data[3],data[2])
Nachricht Warnung: In mean.default (variabel): Argument ist nicht numerisch oder logisch: Rückkehr NA
Ich verstehe, dass etwas falsch läuft, während die mittlere Funktion verwendet wird. Hier
ist die Ausgabe von str(data)
'data.frame': 45 obs. of 11 variables:
$ V1 : int 2 3 3 2 3 2 2 2 3 2 ...
$ V2 : num 1.3243 -2.4546 0.1352 0.0676 -1.1901 ...
$ V3 : num 0.913 -2.644 0.663 1.217 -0.409 ...
$ V4 : num -1.863 1.965 -0.698 -0.945 0.617 ...
$ V5 : num -0.574 1.031 -0.308 -0.574 0.354 ...
$ V6 : num -0.8963 2.5702 0.0736 -1.3671 0.9045 ...
$ V7 : num 0.2276 0.0624 0.5945 0.6194 0.5473 ...
$ V8 : num 1.304 -1.624 0.408 0.368 -0.559 ...
$ V9 : num -0.1827 -0.9748 -0.5158 -0.0191 -0.3053 ...
$ V10: num -0.964 0.67 -0.12 0.789 0.711 ...
$ V11: num -0.833 -0.833 -0.833 -0.0539 -0.0539 ...
bitte vorschlagen, wie dieser Fehler loszuwerden.
Danke und Grüße
Werfen Sie einen Blick auf "Aggregat" und "Var". Oder versuchen Sie die 'dplyr'-Pipeline. Und benutze 'data [, 3]', um die dritte Spalte auszuwählen! – Jimbou