2017-06-02 2 views
0

Contexte:

J'utilise habituellement gl() pour générer un nombre « égal » des niveaux de facteur pour un ensemble de variables aléatoires. Par exemple, pour générer 2 niveaux de facteur pour 60 variables aléatoires dans x, j'utilise les éléments suivants:Comment générer des niveaux de facteurs «asymétriques» (inégaux) dans la base R?

x = rnorm(n = 60) 
groups = gl(2, length(x)/2) ## My Factor Levels 

Mais surtout, ne me permet pas de produire, par exemple, 40 niveaux de facteur pour les premiers 40 éléments x , et 20 niveaux de facteur pour les derniers 20 éléments dans (c'est-à-dire, "déséquilibré" (inégal) niveaux de facteur).

Question:

dans la base R, est-il une fonction flexible ou une stratégie pour produire des niveaux de facteurs "asymétriques" (inégales)?

+1

'as.factor (représentant (1: 2, chacun = 40, length.out = longueur (x))) 'pourrait accomplir le cas 40/20 –

+0

@AdamSpannbauer, merci, donc aucune autre fonction R flexible à votre connaissance existe à cet effet, non? – rnorouzian

+0

pense simon a vous couvert de sa réponse en utilisant 'rep' –

Répondre

3

Vous pouvez utiliser rep avec un argument times multivaluée:

x <- factor(rep(1:3, times=c(5,10,2))) 
x 

Cela donne:

[1] 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 
Levels: 1 2 3