7
votes

Comment couper un fichier de données en sélectionnant une gamme de colonnes et de lignes en fonction des noms et non des index?

Ceci est une question de suivi de la question que j'ai posée ici . Là, j'ai appris a) comment faire cela pour les colonnes (voir ci-dessous) et b) que la sélection des lignes et des colonnes semble être manipulée tout à fait différemment dans R, ce qui signifie que je ne peux pas utiliser la même approche pour les lignes.

alors supposons que J'ai un dataframe de pandas comme celui-ci: p> xxx pré>

puis je peux facilement sélectionner des lignes et des colonnes par leurs noms comme celui-ci: p> xxx pré> qui retourne p> xxx pré>

Comment ferais-je cela dans r? Compte tenu d'un fichier de données comme celui-ci p> xxx pré>

apparemment, si je connais les index de mes lignes / colonnes désirées, je peux simplement faire: P>

df[c('r3', 'r4' 'r5'), c('c1','c2', 'c3', 'c4')]


0 commentaires

3 Réponses :


7
votes

Vous pouvez utiliser qui () avec rownames : xxx


3 commentaires

Oui, je devrais être plus précis (modifiera ma question): cela devrait fonctionner pour des noms arbitraires; Ceux-ci ici seraient effectivement faciles à analyser :)


Ok je l'ai lu trop vite au début. Est-ce ce dont vous avez besoin?


Super! Oui, cela fonctionne bien. Je l'avoue pour l'instant et l'accepte plus tard en fonction de la qualité des autres réponses.



2
votes

Utiliser Match code> pour rechercher la position de noms de ligne spécifiques.

df[match("r3", rownames(df)):match("r5", rownames(df)), match("c1", colnames(df)):match("c4", colnames(df))]

   c1 c2 c3 c4
r3  3  4  5  6
r4  4  5  6  7
r5  5  6  7  8


5 commentaires

Mais ensuite, j'ai besoin de spécifier les rangées et les colonnes ce que je veux réellement éviter (j'ai édité ma question à rendre cela plus clair); Imaginez cela pour 100 rangées / colonnes que vous souhaitez choisir ...


Oui, cela fonctionne aussi (upvoted)! Il vous suffit de corriger les fautes de frappe dans index.c .


Merci d'avoir remarqué!


Cela ne suppose-t-il pas que les noms de ligne sont dans l'ordre lexicographique? Ce n'est peut-être pas toujours le cas (noms de rangée comme identifiant ou quelque chose)


J'ai aimé la version avant de mieux; Les noms de ligne et de colonne peuvent être arbitraires, à l'aide de R et C, respectivement, n'était qu'un exemple.



3
votes

Vous pouvez écrire une fonction qui vous donnera un peu le même comportement xxx

l'utiliser comme xxx

pour votre question xxx


0 commentaires