Home › Forum › Statistica con R › come creare una nuova variabile in un dataframe già esistente
Questo argomento contiene 14 risposte, ha 5 partecipanti, ed è stato aggiornato da Antonio 2 settimane fa.
-
AutoreArticoli
-
26 Settembre 2019 alle 12:45 #6856
Salve,
sto analizzando dei dati dove è presente la variabile residenza, distinta in italiana e estera.
Vorrei conoscere quanti di questi sono sardi quindi vorrei poter creare un ulteriore variabile che presenti tre modalità dove vengono conteggiati anche i sardi.
come posso fare? nella variabile residenza sono presenti i nomi delle città dove le persone risiedono e non la provincia-
Questo argomento è stato modificato 1 anno, 4 mesi fa da
mattia29.
26 Settembre 2019 alle 12:53 #6857Se non hai una variabile che codifica per la provincia, te la devi creare. Hai quindi bisogno di un dataset esterno che indichi, per ogni comune, la corrispettiva provincia. A questo punto punto, incroci i due dataset e aggiungi a quello originario la provincia di riferimento, e su questa ti fai i tuoi calcoli.
26 Settembre 2019 alle 18:04 #6861esatto, non ho una variabile che codifica la provincia. cosa intendi per dataset esterno?
dovrei crearlo attraverso excel?..
oppure se creassi nel file excel esportato in r, una variabile residenza e a quel punto utilizzare questo nuovo anche così sarebbe fattibile.
però sono curiosa di sapere come posso creare dataset esterno e incrociare con l’originario27 Settembre 2019 alle 00:31 #6862Ciao mattia29,
Ci sono due articoli (uno di Davide e uno mio) su questo argomento (incrociare due tabelle) dentro al blog di insular: http://www.insular.it/2019/01/incrociare-due-tabelle-dplyrinner_join-vs-merge/Vedi se riesci a risolvere il problema leggendo questi. La strada da seguire come ha detto Davide dovrebbe essere creare a mano un dataset su Excel dove ad ogni città corrisponde una regione (un file con due colonne quindi). A quel punto potrai incrociare questa tabella con il tuo dataset originale, dove ad ogni città verrà automaticamente associata la sua regione. A quel punto avrai una variabile che ti indica se una persona è sarda.
27 Settembre 2019 alle 00:31 #6863Ciao mattia29,
Ci sono due articoli (uno di Davide e uno mio) su questo argomento (incrociare due tabelle) dentro al blog di insular: http://www.insular.it/2019/01/incrociare-due-tabelle-dplyrinner_join-vs-merge/Vedi se riesci a risolvere il problema leggendo questi. La strada da seguire come ha detto Davide dovrebbe essere creare a mano un dataset su Excel dove ad ogni città corrisponde una regione (un file con due colonne quindi). A quel punto potrai incrociare questa tabella con il tuo dataset originale, dove ad ogni città verrà automaticamente associata la sua regione. A quel punto avrai una variabile che ti indica se una persona è sarda.
2 Ottobre 2019 alle 17:49 #6865GRazie mille Francesco,
ho letto l’articolo dopo aver fatto a manina il filtraggio. Ovvero, ho una variabile nat, che identifica gli italiani con 1 e gli stranieri con 0, però voglio creare un ulteriore variabile nat1 dove vengano identificati anche i sardi, cioè 1 sardi, 2 italiani, 3 stranieri. Alla fine ho modificato il dataset di excel creando la colonna nat1 e inserito a manina i numeretti.
Non so se con il tuo suggerimento sarebbe stato possibile’ applicarlo alla mia necessità. mi spiego. Si crea la variabile agente in servizi disattivi proveniente da clienti. però mi domando come fa r a riconoscere il valore esatto dell’osservazione corrispondente?. lo domando perchè, se io ho tre provenienze che identifico attraverso le modalità 1,2,3 come faccio a dire a r che 1 sono i sardi, 2 gli italiani e 3 gli stranieri?-
Questa risposta è stata modificata 1 anno, 3 mesi fa da
mattia29.
2 Ottobre 2019 alle 17:59 #6867perdonami, credo di essere giunta a comprensione.
Ho letto anche il posto precedente a questo che hai suggerito. grazie mille2 Ottobre 2019 alle 18:07 #6868Prova a dare un’occhiata a questo codice.
Prima di tutto mi costruisco due dataset, uno con i dati di interesse e un altro che associa a ogni città la corrispettiva regione:
cittadini <- data.frame( nome = c("Paperino","Qua","Zio Paperone","Topolino","Pippo","Rockerduck"), nazione = c("Italia", "Italia", "Italia", "Italia", "Italia", "UK"), citta = c("Roma","Roma","Ancona","Cagliari","Cagliari","Londra"), variabile = c(24,32,11,76,44,27), stringsAsFactors = FALSE ) georef <- data.frame( citta = c("Ancona","Roma","Cagliari","Siracusa"), regione = c("Marche","Lazio","Sardegna","Sicilia"), stringsAsFactors = FALSE )
Eccoli qua:
> cittadini nome nazione citta variabile 1 Paperino Italia Roma 24 2 Qua Italia Roma 32 3 Zio Paperone Italia Ancona 11 4 Topolino Italia Cagliari 76 5 Pippo Italia Cagliari 44 6 Rockerduck UK Londra 27 > georef citta regione 1 Ancona Marche 2 Roma Lazio 3 Cagliari Sardegna 4 Siracusa Sicilia
Adesso osserva:
> library(tidyverse) > left_join(cittadini, georef, by = "citta") nome nazione citta variabile regione 1 Paperino Italia Roma 24 Lazio 2 Qua Italia Roma 32 Lazio 3 Zio Paperone Italia Ancona 11 Marche 4 Topolino Italia Cagliari 76 Sardegna 5 Pippo Italia Cagliari 44 Sardegna 6 Rockerduck UK Londra 27 <NA>
Ho unito i due dataset utilizzando come chiavee la citta: il comando
left_join
attacca al dataframe di sinistra il dataframe di destra ordinando le righe seguendo la corrispondenza per città.3 Ottobre 2019 alle 12:24 #6870Dimenticavo. Per aggiungere una colonna che vada a specificare, per i sardi, una nazionalità “Sarda” e non Italiana (lo so, finirò in manette per questo :P), puoi fare così:
cittadini <- cittadini %>% left_join(georef, by = "citta") %>% mutate( provenienza = ifelse(nazione == "Italia" & regione == "Sardegna", regione, nazione) )
> cittadini nome nazione citta variabile regione provenienza 1 Paperino Italia Roma 24 Lazio Italia 2 Qua Italia Roma 32 Lazio Italia 3 Zio Paperone Italia Ancona 11 Marche Italia 4 Topolino Italia Cagliari 76 Sardegna Sardegna 5 Pippo Italia Cagliari 44 Sardegna Sardegna 6 Rockerduck UK Londra 27 <NA> UK
3 Ottobre 2019 alle 13:11 #6871Dimenticavo. Per aggiungere una colonna che vada a specificare, per i sardi, una nazionalità “Sarda” e non Italiana (lo so, finirò in manette per questo :P), puoi fare così
Ahahah! Grande Davide!!
4 Ottobre 2019 alle 00:48 #6876Per aggiungere una colonna che vada a specificare, per i sardi, una nazionalità “Sarda” e non Italiana
😂👍🏻
4 Ottobre 2019 alle 09:22 #6877Lo so, finirò in manette per queste dichiarazioni!
10 Gennaio 2021 alle 09:46 #7530BuonGiorno,
Come posso raggruppare la variabile età o in generale una variabile continua (ho letto l’articolo La variabile età…ma portate pazienza!) in una variabile a intervalli “0-29” “30-64” “65+” nello stesso dataset?
Grazie10 Gennaio 2021 alle 10:23 #7531variabile continua in una a intervalli col mutate Grazie
10 Gennaio 2021 alle 12:05 #7532Ma Dov’è l’errore?
library(dplyr)iris2=iris
iris2 = iris2 %>% mutate (
if (iris2$Petal.With<=0.29){Petal.Int=”0.00-0.29″}
else if (0.30<=iris2$Petal.With<=1.29){Petal.Int=”0.30-1.29″}
else if (1.30<=iris2$Petal.With<=1.79){Petal.Int=”1.30-1.79″}
else {Petal.Int=”1.80-2.50″}
)
Grazie -
Questo argomento è stato modificato 1 anno, 4 mesi fa da
-
AutoreArticoli
Devi essere loggato per rispondere a questa discussione.