Comment convertir une table de fréquences en un vecteur de valeurs?

13

En utilisant R ou Excel, quelle est la manière la plus simple de convertir une table de fréquences en un vecteur de valeurs?

Par exemple, comment convertiriez-vous le tableau de fréquences suivant

Value   Frequency
  1.      2
  2.      1
  3.      4
  4.      2
  5.      1

dans le vecteur suivant?

1, 1, 2, 3, 3, 3, 3, 4, 4, 5
Rob
la source

Réponses:

21

Dans R, vous pouvez le faire en utilisant la repcommande:

tab <- data.frame(value=c(1, 2, 3, 4, 5), freq=c(2, 1, 4, 2, 1))
vec <- rep(tab$value, tab$freq)

Cela donne le résultat suivant:

> tab
  value freq
1     1    2
2     2    1
3     3    4
4     4    2
5     5    1

> vec
 [1] 1 1 2 3 3 3 3 4 4 5

Pour plus de détails, consultez le fichier d'aide de la repcommande en tapant ?rep.

Felix S
la source
2
Ou, étant donné une simple table de fréquence pour vec <- sample(1:5, 20, TRUE)créé par table(): rep(names(table(vec)), table(vec)). Le résultat doit ensuite être converti avec as.numeric()si les catégories sont des nombres réels.
caracal
1

Évidemment, dans R, c'est plus simple.

Dans Excel, j'utiliserais une colonne d'assistance (si la valeur est en A1):

  value freq help
1     1    2  =REPT(A2 & ", ",B2)
2     2    1  =C1 & REPT(A3 & ", ",B3)
3     3    4  (drag or copy from upper cell)
4     4    2  (drag or copy from upper cell)
5     5    1  (drag or copy from upper cell)
              =LEFT(C6, LEN(C6)-1)

En C7 vous avez votre résultat

momobo
la source