我正在努力解决的一个概念上很简单的问题。我将观察值(“值”)随时间按ID分组,并希望将每个观察值归一化为其先前的观察值。在下面的示例中,我可以将每个“值”归一化为ID组中的第一个“时间”观察值(即10到10、20到10、30到10等),但是我想将每个“值”归一化为之前的观察值(例如20到10、30到20等),并且无法使其正常工作。
ID <- c(rep("A", 4), rep("B", 3), rep("C", 3))
Time <- c(10, 20, 30, 40, 10, 20, 30, 10, 20, 30)
Value <- sample(1:100, 10)
dat <- cbind(ID, Time, Value)
newDat <- dat %>%
arrange(Time) %>%
group_by(ID) %>%
mutate(ratio = Value/first(Value))
使用lag
library(dplyr)
dat %>%
group_by(ID) %>%
mutate(ratio = Value/lag(Value))
数据
ID <- c(rep("A", 4), rep("B", 3), rep("C", 3))
Time <- c(10, 20, 30, 40, 10, 20, 30, 10, 20, 30)
Value <- sample(1:100, 10)
dat <- data.frame(ID, Time, Value)