Desidero aggiungere un suffisso o prefisso alla maggior parte dei nomi delle variabili in un data.frame, in genere dopo che sono stati tutti trasformati in qualche modo e prima dell'esecuzione unirsi. Non ho un modo per farlo senza rompere le mie corde.Aggiunta del prefisso o del suffisso alla maggior parte dei nomi delle variabili data.frame nel flusso di lavoro R spogliato
Ad esempio, con questi dati:
library(dplyr)
set.seed(1)
dat14 <- data.frame(ID = 1:10, speed = runif(10), power = rpois(10, 1),
force = rexp(10), class = rep(c("a", "b"),5))
Voglio arrivare a questo risultato (nota nomi delle variabili):
class speed_mean_2014 power_mean_2014 force_mean_2014
1 a 0.5572500 0.8 0.5519802
2 b 0.2850798 0.6 1.0888116
mio approccio attuale è:
means14 <- dat14 %>%
group_by(class) %>%
select(-ID) %>%
summarise_each(funs(mean(.)))
names(means14)[2:length(names(means14))] <- paste0(names(means14)[2:length(names(means14))], "_mean_2014")
C'è un'alternativa a quella goffa ultima linea che rompe le mie pipe? Ho guardato a select()
e rename()
ma non voglio specificare esplicitamente ciascun nome di variabile, poiché di solito voglio rinominare tutto eccetto una singola variabile e potrebbe avere un data.frame molto più ampio rispetto a questo esempio.
sto immaginando comando pipe finale che approssima la funzione truccata:
appendname(cols = 2:n, str = "_mean_2014", placement = "suffix")
che non esiste per quanto ne so.
piacevole uso di '% <>%' e grazie per aver postato il link, sempre buono da rileggere come aggiornamento – infominer
grazie, mi sono totalmente innamorato dell'operatore '% <>%', è proprio così utile, poiché tali compiti vengono visualizzati così spesso, è possibile utilizzarli anche per ricalcolare o arrotondare alcune colonne, come questo 'df $ meancolumn% <>% round()', e così via, viene visualizzato molto spesso e ti fa risparmiare un sacco di scrittura – grrgrrbla
Sicuramente un miglioramento, grazie. Io uso '% <>%' spesso per sostituire 'df <- df %>% ...' ma non mi è mai venuto in mente di usarlo per altri tipi di dati come i vettori. Il tuo esempio con 'round()' è abbastanza conciso! –