2013-02-02 16 views
15

Ho un set di dati con tre colonne. La prima colonna è type, la seconda colonna è area e la terza colonna vale. Voglio scrivere un vettore logico tale che il tipo = 1, area = 3 e vale = 6. Sono stato in grado di creare il frame di dati utilizzando il sottoinsieme ma non sono riuscito a creare un vettore logico.Creare un vettore logico in R e utilizzare quale funzione

hello <- read.csv("type.csv") 
hello1 <- subset(hello, type==1 & area ==3 & worth ==6) 

Ci sono molti valori NA nella colonna del valore. Il set di dati è https://www.dropbox.com/s/gjjwmnr8uxmy18y/type.csv

Grazie.

Jdbaba

+3

prova: 'con (ciao, ciao [tipo == 1 e zona == 3 e vale == 6])' –

+0

@ Tyler, grazie per la tua risposta. In realtà quello che devo fare è assegnare un vettore logico che identifica quel tipo == 1, area == 3 e vale == 6. Dopo di che ho bisogno di applicare quale() funzione per identificare le righe del frame di dati quando il vettore logico è vero. –

+2

'che (con (ciao, digita == 1 & area == 3 e vale == 6))' – Arun

risposta

16

Quindi la domanda rimane rispose:

which(with(hello, type == 1 & area == 3 & Worth == 6)) 

Ricordate, è possibile utilizzarlo come:

which(hello$type1 == 1 & hello$area == 3 & hello$Worth == 6) 

pure. Tuttavia, quando si hanno più istruzioni da verificare, un with è utile in quanto consente di controllare senza digitare hello$ ogni volta.

+1

Sì, è una risposta. Grazie. –

+1

Se come l'OP suggerisce che il vettore verrà utilizzato per l'indicizzazione, allora non è necessario 'which'. In effetti, si raccomanda persino di non usarlo; Ho almeno un esempio in mente dove può portare a problemi ed è indicizzazione negativa: 'ciao [-which (bool.vec),]' non è lo stesso di 'ciao [! Bool.vec,]' quando ' bool.vec' è 'FALSE' ovunque. – flodel

6

Anche se una risposta è già stata accettata, l'OP chiesto di creare un vettore di logica, e la risposta

which(hello$type1 == 1 & hello$area == 3 & hello$Worth == 6) 

restituisce le righe che corrispondono a queste condizioni. Per tornare invece un vettore logica, è sufficiente utilizzare l'argomento which, cioè

hello$type1 == 1 & hello$area == 3 & hello$Worth == 6 
Problemi correlati