2015-10-01 2 views
0

Dans R i j'ai une matrice qui a plusieurs valeurs catégorielles. Taille indexée 2 m 2, 4 m 2, 6 m 2, nombre d'unités de 1 à 3, nombre de personnes de 1 à 4, puis colonne dont le compte est résumé de toutes les occurrences.multiplier les lignes par la valeur numérique d'une entrée

ex:

Size;Units;Pers;Count 
4;3;4;3 # three time this row 
2;1;1;2 # two times this row 
6;2;2;1 # one times this row 

Comment puis-je faire la dernière colonne/vecteur multyply les lignes de telle sorte que est en imprime:

Size;Units;Pers;Count 
4;3;4;1 
4;3;4;1 
4;3;4;1 
2;1;1;1 
2;1;1;1 
6;2;2;1 

Que ce soit dans un tableur ou dans R. Ce est une mission pour l'école et je ne peux pas trouver le moyen de faire le dernier vecteur (que j'utilise comme une constante pour multiplier les 3 premières colonnes et pourtant toujours en garder une dans la dernière colonne.)

+0

Eh bien, grâce à @SamFirke, vous devriez apprendre que même si vous ne pouvez pas le comprendre par vous-même, vous devriez au moins être en mesure de faire des recherches, parce que le plus souvent, la réponse est là. –

Répondre

1

Nous pouvons reproduire la séquence de lignes par le « Count » colonne et transform pour créer la colonne « Count » de 1.

transform(df1[rep(1:nrow(df1), df1$Count),-4], Count=1) 

Cela peut également être fait avec fonction enveloppe expandRows de library(splitstackshape)

library(splitstackshape) 
transform(expandRows(df1, 'Count'), Count=1)