Ho un data.frame con molte colonne (~ 50). Alcuni di loro sono di carattere, alcuni sono numerici e 3 di essi li uso per il raggruppamento.R: riepilogare più colonne (numerico, carattere) e rimuovere NAs
devo:
- rimuovere AN da colonne numeriche
- calcolare la media di ciascuna delle colonne numeriche
- estrarre il primo elemento delle colonne di caratteri
Diciamo che stiamo usando i dati dell'iride modificati come di seguito:
data(iris)
iris$year <- rep(c(2000,3000),each=25) ## for grouping
iris$color <- rep(c("red","green","blue"),each=50) ## character column
iris[1,] <- NA ## introducing NAs
Ho ~ 50 colonne in totale, numerico e carattere mescolati insieme. Ho provato qualcosa di simile:
giris <- group_by(iris, Species, year)
cls <- unlist(sapply(giris, class)) ## find out classes
action <- ifelse(cls == "numeric", "mean", "first")
action <- paste(action)
summarise_each(giris, action)
quello che ottengo è un mezzo per tutte le colonne di un gruppo seguiti da colonne con i primi valori in rispettivo gruppo. E le NA non sono gestite ... Che non è esattamente quello che cerco ...
Aiuta qualcuno?
Penso che potresti voler aggiungere 'na.omit()' sopra 'group_by', ma questo è l'essenza della domanda. – JasonAizkalns
@JasonAizkalns, io non la penso così - questo potenzialmente rimuoverebbe molte righe che dovrebbero essere mantenute. Ma sono d'accordo sul fatto che un 'filter (! Is.na (Species) &! Is.na (year))' avrebbe senso –
Questa è una soluzione veramente carina e (la più importante) che permette anche di dare un'occhiata a cosa sta andando sotto il cofano di summarise_each. Ne sono davvero, DAVVERO grato, Doncendo :-). Allo stesso tempo, pensi che ci possa essere un modo per accelerarlo? – rpl