Tommaso C. & Marco G.
30 Novembre - 2 Dicembre 2016
Modificare i dati nei seguenti modi:(Aiuto modifica fattori)
nella colonna seller:
nella colonna offerType:
eliminare tutte le righe con prezzo superiore ai 100000 euro
Modificare una colonna di fattori in R non è facile come modificare un dato numerico. Per modificare un dato numerico di un dataframe basta sovrascriverlo.
v <- 1:10
pippo <- data.frame(mieiDati = v)
pippo$mieiDati
## [1] 1 2 3 4 5 6 7 8 9 10
#prendiamo tutte le righe della colonna "mieiDati" e li moltiplichiamo per 3
pippo[,"mieiDati" ] <- pippo[, "mieiDati"] * 3
pippo$mieiDati
## [1] 3 6 9 12 15 18 21 24 27 30
Ci si aspetterebbe una cosa simile anche per i fattori
I fattori sono liste di variabili qualitative e se si prova ad inserire un valore non compreso nei levels viene aggiunto un NA
v <- c("pippo", "pluto", "pluto", "paperino", "paperino", "pluto", "paperino", "paperino")
personaggi <- data.frame(mieiDati = as.factor(v))
personaggi$mieiDati
## [1] pippo pluto pluto paperino paperino pluto paperino paperino
## Levels: paperino pippo pluto
# ora prendiamo tutte le righe della colonna "mieiDati" che contengono pippo e li sostituiamo con topolino
personaggi[personaggi$mieiDati == "pippo", "mieiDati"] <- "topolino"
## Warning in `[<-.factor`(`*tmp*`, iseq, value = "topolino"): invalid factor
## level, NA generated
personaggi$mieiDati
## [1] <NA> pluto pluto paperino paperino pluto paperino paperino
## Levels: paperino pippo pluto
Niente da fare???
v <- c("pippo", "pluto", "pluto", "paperino", "paperino", "pluto", "paperino", "paperino")
personaggi <- data.frame(mieiDati = as.factor(v))
personaggi$mieiDati
## [1] pippo pluto pluto paperino paperino pluto paperino paperino
## Levels: paperino pippo pluto
# prima aggiungiamo ai levels, i nuovi possibili valori
levels(personaggi$mieiDati) <- c(levels(personaggi$mieiDati), "topolino")
# ora prendiamo tutte le righe della colonna "mieiDati" che contengono pippo e li sostituiamo con topolino
personaggi[personaggi$mieiDati == "pippo","mieiDati"] <- "topolino"
levels(personaggi$mieiDati)
## [1] "paperino" "pippo" "pluto" "topolino"
unique(personaggi$mieiDati)
## [1] topolino pluto paperino
## Levels: paperino pippo pluto topolino
# levels e unique non coincidono
# usando il comando droplevels eliminiamo dal fattore i valori che non compaiono neanche una volta
levels(personaggi$mieiDati) <- droplevels(personaggi$mieiDati)
personaggi$mieiDati
## [1] paperino pluto pluto topolino topolino pluto topolino topolino
## Levels: topolino pluto paperino
Usateli solo per controllare quando siete sicuri di quello che avete scritto