Ho due set di dati che dovrebbero avere la stessa dimensione ma non lo sono. Ho bisogno di tagliare i valori da A che non sono in B e viceversa per eliminare il rumore da un grafico che sta entrando in un rapporto. (Non ti preoccupare, questo dato non viene eliminato in modo permanente!)Come posso impostare sottoinsieme le righe in un frame di dati in R in base a un vettore di valori?
Ho letto quanto segue:
- Selecting columns in R data frame based on those *not* in a vector
- http://www.ats.ucla.edu/stat/r/faq/subset_R.htm
- How to combine multiple conditions to subset a data-frame using "OR"?
Ma io' Non riesco ancora a far funzionare correttamente questo Ecco il mio codice:
bg2011missingFromBeg <- setdiff(x=eg2011$ID, y=bg2011$ID)
#attempt 1
eg2011cleaned <- subset(eg2011, ID != bg2011missingFromBeg)
#attempt 2
eg2011cleaned <- eg2011[!eg2011$ID %in% bg2011missingFromBeg]
Il primo tentativo elimina solo il primo valore nel vettore setdiff risultante. Il secondo rendimenti cercare di errore ingombrante:
Error in `[.data.frame`(eg2012, !eg2012$ID %in% bg2012missingFromBeg)
: undefined columns selected
Hai provato a unire? – A5C1D2H2I1M1N2O1R2T1
Non penso che "unione" sia appropriato qui. Non voglio che i set di dati siano combinati. – Zelbinian
No, penso che "unire" sia esattamente appropriato. Un join interno ti darebbe solo le righe che si trovano sia in A che in B. Puoi quindi subordinare le colonne del risultato se l'unione aggiungesse quelle estranee. – joran