Extrait un sous-ensemble d'une trame de données basée sur une condition impliquant un champ

StackOverflow https://stackoverflow.com/questions/3445590

  •  27-09-2019
  •  | 
  •  

Question

J'ai un grand CSV avec les résultats d'une enquête médicale à différents endroits (l'emplacement est un facteur présent dans les données). Étant donné que certaines analyses sont spécifiques à un endroit et pour plus de commodité, je voudrais extraire avec les lignes sous-trames seulement de ces endroits. Il arrive que l'emplacement est le champ premier si oui, je pouvais le faire en triant les lignes de CSV, mais je voudrais savoir comment le faire en R comme je suis sûr que je vais avoir besoin de cela pour d'autres colonnes.

Donc, en un mot, la question est: étant donné une trame de données foo, comment puis-je créer une autre barre de trame de données qui ne contient que les lignes de foo où foo$location = 'there'

Était-ce utile?

La solution

Voici les deux approches. Je préfère celui-ci pour sa lisibilité:

bar <- subset(foo, location == "there")

Notez que vous pouvez enchaîner plusieurs conditionals avec & et | pour créer des sous-ensembles complexes.

La seconde est l'approche d'indexation. Vous pouvez les lignes d'index en R avec soit numérique ou tranches booléens. foo$location == "there" renvoie un vecteur de valeurs de T et F qui est la même longueur que les rangées de foo. Vous pouvez le faire pour renvoyer uniquement les lignes où le retour de l'état vrai.

foo[foo$location == "there", ]

Autres conseils

Juste pour prolonger la réponse ci-dessus, vous pouvez également indexer vos colonnes plutôt que de spécifier les noms de colonnes qui peuvent également être utiles en fonction de ce que vous faites. Étant donné que votre emplacement est le premier champ, il ressemblerait à ceci:

    bar <- foo[foo[ ,1] == "there", ]

Ceci est utile parce que vous pouvez effectuer des opérations sur la valeur de votre colonne, comme en boucle sur les colonnes spécifiques (et vous pouvez faire la même chose par le nombre de lignes d'indexation trop).

Il est également utile si vous avez besoin d'effectuer une opération sur plus d'une colonne parce que vous pouvez spécifier une plage de colonnes:

    foo[foo[ ,c(1:N)], ]

Ou colonnes spécifiques, comme on peut s'y attendre.

    foo[foo[ ,c(1,5,9)], ]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top