Extraction d'un échantillon aléatoire de lignes dans un data.frame avec un conditionnel imbriqué
Cette question s'appuie de la poste trouvé ici et utilise un code qui a été modifié à partir d'un poste sur la R-aider à la liste de diffusion qui peut être vu ici
Je suis en train d'extraire un échantillon aléatoire de lignes dans un bloc de données mais avec un conditionnel. À l'aide de la R iris
de données qui ressemble à:
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
De prendre un échantillon aléatoire simple, le code ci-dessous fonctionne très bien pour prendre un échantillon de 2 lignes.
iris[sample(nrow(iris), 2), ]
Mais j'ai des doutes sur la condition de l'Espèce de champ. Par exemple, comment prendre de l'échantillon aléatoire comme indiqué ci-dessus, mais seulement lorsque Species != “setosa”
Il existe trois catégories de iris$Species
> summary(iris$Species)
setosa versicolor virginica
50 50 50
Je ne suis pas sûr comment correctement nid conditions. L'une de mes premières tentatives de est ci-dessous avec l'évidence des résultats incorrects....
> iris[sample(nrow(iris)[iris$Species != "setosa"], 2), ]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
NA NA NA NA NA <NA>
NA.1 NA NA NA NA <NA>
Grâce
source d'informationauteur B. Davis | 2013-11-14
Vous devez vous connecter pour publier un commentaire.
J'utiliserais
which
pour obtenir le vecteur des lignes de numéros à partir de laquelle vous pouvezsample
compte tenu de votre état de santé....Avec dplyr:
De sortie:
Il serait plus propre de ne pas le faire en une seule ligne, mais
Propre et simple tableau de données: approche pour