Ho un frame di dati con una colonna ID, una colonna di data (12 mesi per ciascun ID) e ho 23 variabili numeriche. Vorrei ottenere la variazione percentuale per mese all'interno di ciascun ID. Sto usando il pacchetto quantmod per ottenere la variazione percentuale.Come posso calcolare la variazione percentuale all'interno di un gruppo per più colonne in R?
Ecco un esempio con solo tre colonne (per semplicità):
ID Date V1 V2 V3
1 Jan 2 3 5
1 Feb 3 4 6
1 Mar 7 8 9
2 Jan 1 1 1
2 Feb 2 3 4
2 Mar 7 8 8
ho tentato di usare dplyr e la funzione summarise_each, ma che non ha avuto successo. Più in particolare, ho provato la seguente (treno è il nome del set di dati):
library(dplyr)
library(quantmod)
group1<-group_by(train,EXAMID)
foo<-function(x){
return(Delt(x))
}
summarise_each(group1,funs(foo))
Ho anche cercato di utilizzare la funzione di fare dplyr, ma non ha avuto successo con che o (avendo una brutta notte indovina!).
Penso che il problema sia la funzione Delt. Se si sostituisce Delt con la funzione sum:
foo<-function(x){
return(sum(x))
}
summarise_each(group1,funs(foo))
Il risultato è che ogni variabile è riassunta tutta la data per ogni ID. Quindi, come può la variazione percentuale mese su mese per ogni ID?
ottengo il seguente errore: Errore: in attesa di un singolo valore Questa è una buona idea però. – mmmmmmmmmm
@cwh_UCF Usa mutate invece di riepilogare (che è progettato per restituire un singolo valore): 'DF%>% group_by (ID)%>% mutate_each (funs (pct), c (V1, V2, V3))' – Frank
@ Frank non dovrebbe essere una risposta invece di un commento. Sto solo chiedendo :) –