Ho data.frame che contiene diversi fattori e voglio rinominare i livelli dei fattori per tutti questi fattori. Es .:Come assegnare all'interno della famiglia apply?
mydf <- data.frame(col1 = as.factor(c("A","A",NA,NA)),col2 = as.factor(c("A",NA,NA,"A")))
mydf <- as.data.frame(lapply(mydf,addNA))
Si noti che l'esempio di vita reale ha molto più di due colonne. Quindi vorrei usare applicare per assegnare altri nomi di livello a tutte queste colonne, proprio come in:
levels(mydf$col1) <- c("1","0")
Ho provato quanto segue ma non ha funzionato ...
apply(mydf,1,function(x) levels(x) <- c("1","0"))
io non sono veramente sorpreso che non funzioni ma non ho idee migliori al momento. Dovrei usare with
forse?
EDIT: Ho realizzato che ho commesso un errore qui semplificando eccessivamente le cose. Ho usato addNA
per tenere conto del fatto che le NA non dovrebbero più essere gestite come NA. Così voglio anche relabel loro. Questo non funziona con suggerimento di Andrie e restituisce il seguente messaggio di errore:
labels = c("1", : invalid labels; length 2 should be 1 or 1
Si noti che ho aggiornato il mio esempio df.
Non si dice cosa si vuole fare con i livelli di NA. Rinominarli a cosa? – Andrie
dopo aver usato addNA Ho i livelli 1 e. E mi piace avere la categoria NA rinominata a 0 - proprio come se fossero normali livelli di fattore e non erano mai stati NA. –
@Charles: cosa c'è di sbagliato nel tag categoriale? Questa è una domanda seria. È perché è così agnostico del linguaggio? Usare il termine R per categoriale ('factor') non sarebbe stato migliore. Dovrei lasciare fuori l'intero aspetto e perché? –