Calculer la moyenne de toutes les 13 lignes dans le bloc de données
J'ai un bloc de données avec 2 colonnes et 3659 ligne df
Je suis en train de réduire l'ensemble de données en moyenne tous les 10 ou 13 lignes dans ce bloc de données, j'ai donc essayé le suivant :
# number of rows per group
n=13
# number of groups
n_grp=nrow(df)/n
round(n_grp,0)
# row indices (one vector per group)
idx_grp <- split(seq(df), rep(seq(n_grp), each = n))
# calculate the col means for all groups
res <- lapply(idx_grp, function(i) {
# subset of the data frame
tmp <- dat[i]
# calculate row means
colMeans(tmp, na.rm = TRUE)
})
# transform list into a data frame
dat2 <- as.data.frame(res)
Cependant, je ne peux pas partager mon nombre de lignes par 10 ou 13 parce que la longueur des données n'est pas un multiple de split variable. Donc, je ne suis pas sûr de ce que doit faire alors (je veux juste peut-être pour calculer la moyenne du dernier groupe d'-même avec moins de 10 éléments)
J'ai aussi essayé celui-ci, mais le résultat est le même:
df1=split(df, sample(rep(1:301, 10)))
Quelqu'un de posé une question similaire aujourd'hui. Combiner
le problème que je ne peux pas diviser par le nombre de groupes que je veux. car j'ai un nombre impair de colonnes et je veux avoir 10 groupes par exemple
split
et cut
. Voir si cela aide les stackoverflow.com/questions/30356275/r-divide-data-into-groupsle problème que je ne peux pas diviser par le nombre de groupes que je veux. car j'ai un nombre impair de colonnes et je veux avoir 10 groupes par exemple
OriginalL'auteur user3617715 | 2015-05-20
Vous devez vous connecter pour publier un commentaire.
Voici une solution à l'aide de
aggregate()
etrep()
.La partie importante de cette solution qui gère la question de la non-divisibilité des
nrow(df)
parn
est de spécifier lalen
paramètre (en fait le nom complet de paramètre estlength.out
) derep()
automatiquement caps le groupe de vecteur à la longueur appropriée.OriginalL'auteur bgoldst
Si
df
est un ensemble de données.table, vous pouvez utiliser%/%
de groupe, comme danssi au contraire, vous voulez chaque nième ligne, l'utilisation
%%
au lieu de%/%
OriginalL'auteur Ricardo Saporta
Cela devrait fonctionner. Utiliser n = 13 pour l'agglutination 13 lignes ensemble. Si vous avez 27 lignes, vous allez obtenir des groupes de taille 13, 13, 1.
OriginalL'auteur Vlo