Filtrarea unui cadru de date în funcție de valorile dintr-o coloană [duplicat] (Programare, R, Filtru, Dataframe)

user722224 a intrebat.

Lucrez cu setul de date LearnBayes. Pentru cei care doresc să vadă datele reale:

install.packages('LearnBayes')

Încerc să filtrez rândurile în funcție de valoarea din coloane. De exemplu, dacă valoarea coloanei este „apă”, atunci vreau acel rând. Dacă valoarea coloanei este „lapte”, atunci nu îl vreau. În cele din urmă, încerc să filtrez toate persoanele a căror coloană de băuturi este „apă”.

Comentarii

  • Încercați să citiți ?'[' și apoi citiți ?subset. –  > Por joran.
  • Mulțumesc pentru indicații. Cu siguranță un sfat la îndemână și aștept cu nerăbdare să îl folosesc în viitor. –  > Por utilizator722224.
  • Vă sugerez să citiți manualele R foarte bune: cran.r-project.org/doc/manuals/R-intro.html –  > Por Andrie.
3 răspunsuri
adamleerich

Comanda subset nu este necesară. Utilizați doar indexarea cadrului de date

studentdata[studentdata$Drink == 'water',]

Citiți avertismentul din ?subset

Aceasta este o funcție de conveniență destinată utilizării în mod interactiv. Pentru programare este mai bine să se utilizeze funcțiile standard de subset, cum ar fi ‘[‘ și, în special, evaluarea nestandardizată a argumentului „subset” poate avea consecințe neașteptate.

Comentarii

  • Mulțumesc @adamleerich. Din curiozitate, care este raționamentul din spatele virgulei? –  > Por ThinkBonobo.
  • The [ ] indexează în cadrul de date bidimensional în modul normal în care sunt indexate matricile în matematică: rând și apoi coloană, separate prin virgulă. În acest caz, transmitem un vector de indici de rânduri (studentData$Drink == 'water' selectează rândurile care ne interesează), dar, deoarece nu dorim să restricționăm coloanele pe care le obținem pentru acele rânduri (le dorim pe toate), lăsăm partea de coloană a perechii de indici goală (deci nu există nimic după virgulă). Acesta este un zahăr sintactic pentru a evita necesitatea de a furniza un vector cu toți indicii coloanelor. –  > Por Will.
  • ce se întâmplă când trebuie să folosesc < sau > semboli? –  > Por can.u.
  • Acest lucru nu filtrează datele, ci doar înlocuiește rândurile care nu îndeplinesc criteriile cu NA. Este necesară o altă operațiune pentru a elimina aceste rânduri –  > Por Johnny V.
  • Mulțumesc cu acest lucru! –  > Por Royce.
Dave Kincaid

Încearcă asta:

subset(studentdata, Drink=='water')

care ar trebui să o facă.

Comentarii

  • Vă mulțumim! Am încercat o variație a acestui lucru, dar probabil că am greșit punctuația sau ceva prostesc de genul ăsta. Vă mulțumesc pentru ajutor. –  > Por user722224.
rrs

M-am gândit să actualizez acest lucru cu un dplyr soluție

library(dplyr)    
filter(studentdata, Drink == "water")

Comentarii

    21

  • sau cu țevi studentdata %>% filter(Drink == "water") –  > Por Sam Firke.