utilisation de tapply

Questions sur les objets de R et la manipulation des données

Modérateur : Groupe des modérateurs

hénin virginie
Messages : 14
Enregistré le : 18 Avr 2006, 15:11

utilisation de tapply

Messagepar hénin virginie » 31 Mai 2006, 14:30

Bonjour

en fait je cherche comment utiliser tapply dans le cas suivant

j'ai un tableau ayant trois colonnes

1 5 6
1 4 3
1 2 1
1 6 4
2 6 2
2 6 6
2 5 4

par exemple
je voudrais calculer la somme des erreurs au carré pour chaque simulation correspondant à la première colonne

en utilisant tapply
car j'ai un tableau très grand et donc environ 10 000 simulation
je voudrais utiliser tapply pour gagner du temps
si quelqu'un à une idée

Merci

Cordialement

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 31 Mai 2006, 15:02

Je ne comprends pas votre question. De quelles erreurs s'agit-il ? Quel est l'objectif des simulations ?

hénin virginie
Messages : 14
Enregistré le : 18 Avr 2006, 15:11

Messagepar hénin virginie » 31 Mai 2006, 15:10

je veux juste faire le calcul de la somme des différences au carré des 2 dernières colonnes selon le numéro de la simulation à laquelle ils appartiennent
par exemple pour la simulation 1
je veux faire le calcul
(5-6)^2+(4-3)^2+(2-1)^2+(6-4)^2

et pour la simulation 2
(6-2)^2+(6-6)^2+(5-4)^2


Merci beaucoup
j'espère que c'est plus clair

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 31 Mai 2006, 15:19

Oui.

Code : Tout sélectionner

> Data <- data.frame(x1 = rep(1:2, c(4, 3)),
+                    x2 = c(5, 4, 2, 6, 6, 6, 5),
+                    x3 = c(6, 3, 1, 4, 2, 6, 4))
>
> Data
  x1 x2 x3
1  1  5  6
2  1  4  3
3  1  2  1
4  1  6  4
5  2  6  2
6  2  6  6
7  2  5  4
> Liste <- by(Data,
+             list(x1 = Data$x1),
+             FUN = function(x) c(x1 = unique(x$x1), e2 = sum((x[,3] - x[,2])^2)))
>
> Liste
x1: 1
x1 e2
 1  7
---------------------------------------------------------------------------------------------------------------------
x1: 2
x1 e2
 2 17
> do.call("rbind", Liste)
  x1 e2
1  1  7
2  2 17

François Bonnot
Messages : 458
Enregistré le : 10 Nov 2004, 15:19
Contact :

Messagepar François Bonnot » 31 Mai 2006, 15:27

Ou encore

Code : Tout sélectionner

> x
  simul x1 x2
1     1  5  6
2     1  4  3
3     1  2  1
4     1  6  4
5     2  6  2
6     2  6  6
7     2  5  4
> sapply(split(x,x[,1]),function(z) { sum((z[,2]-z[,3])^2) })
 1  2
 7 17

hénin virginie
Messages : 14
Enregistré le : 18 Avr 2006, 15:11

Messagepar hénin virginie » 01 Juin 2006, 06:56

merci je vais essayer ça
cordialement


Retourner vers « Archives : Manipulation de données avec R »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité