-1
Ich möchte eine neue Spalte nach Namen gruppiert wie folgt erstellen:Wie berechne ich eine neue Spalte basierend auf dem Verhältnis zwischen der aktuellen und der vorherigen Zeile mit der Bibliothek (dplyr) in den Panel-Daten?
library(dplyr)
dates <- as.Date(as.character(c("2011-01-13",
"2011-01-14",
"2011-01-15",
"2011-01-16",
"2011-01-17",
"2011-01-13",
"2011-01-14",
"2011-01-15",
"2011-01-16",
"2011-01-17",
"2011-01-13",
"2011-01-14",
"2011-01-15",
"2011-01-16",
"2011-01-17")))
Name <-c("Andy","Andy","Andy","Andy","Andy","Jo","Jo","Jo","Jo","Jo","Me","Me","Me","Me",'Me')
contribution<- c(2,3,2,2,3,4,5,10,4,10,1,2,4,1,5)
# put together
data <- data.frame(Name, dates, contribution)
Name dates contribution
#1 Andy 2011-01-13 2
#2 Andy 2011-01-14 3
#3 Andy 2011-01-15 2
#4 Andy 2011-01-16 2
#5 Andy 2011-01-17 3
#6 Jo 2011-01-13 4
#7 Jo 2011-01-14 5
#8 Jo 2011-01-15 10
#9 Jo 2011-01-16 4
#10 Jo 2011-01-17 10
#11 Me 2011-01-13 1
#12 Me 2011-01-14 2
#13 Me 2011-01-15 4
#14 Me 2011-01-16 1
#15 Me 2011-01-17 5
(Beitrag - Verzögerung (Beitrag))/1 + Verzögerung (Beitrag): nur Strom ist
wo lag() row - 1
(3-2)/1 + 2 = 1/3 = 0,333
Was ich versucht:
data %>% group_by(Name) %>% mutate(change = (contribution-lag(contribution)/1+lag(contribution)))
Name dates contribution change
#1 Andy 2011-01-13 2 NA
#2 Andy 2011-01-14 3 3
#3 Andy 2011-01-15 2 2
#4 Andy 2011-01-16 2 2
#5 Andy 2011-01-17 3 3
#6 Jo 2011-01-13 4 NA
#7 Jo 2011-01-14 5 5
#8 Jo 2011-01-15 10 10
#9 Jo 2011-01-16 4 4
#10 Jo 2011-01-17 10 10
#11 Me 2011-01-13 1 NA
#12 Me 2011-01-14 2 2
#13 Me 2011-01-15 4 4
#14 Me 2011-01-16 1 1
#15 Me 2011-01-17 5 5
Warum ist es downvoted? – akrun