如何将数据系列规范化为起始值 = 0?

How to normalize data series to start value = 0?

我有一个类似这样的数据集:

library(ggplot2)
data(economics_long)
economics_long$date2 <- as.numeric(economics_long$date) + 915
ggplot(economics_long, aes(date2, value01, colour = variable)) +
       geom_line()

给出以下情节:

现在我想将其归一化为绿线(或均值)的起始值,因此所有变量都从 Y 轴的同一点开始。类似这样:

感谢您的帮助。

您可以使用 by().

根据 variable 值减去每个向量的起始值
library(ggplot2)
l <- by(economics_long, economics_long$variable, function(x) 
  within(x, varnorm <- value01 - value01[1]))
dat <- do.call(rbind, l)

ggplot(dat, aes(date2, value01.n, colour = variable)) +
  geom_line()

使用 group_by()mutate() 将每个变量移动其初始值 y-value。

library(tidyverse)
data(economics_long)

economics_long %>% 
  group_by(variable) %>% 
  mutate(value_shifted = value01 - value01[1]) %>% 
  ungroup() %>% 
  ggplot(aes(date2, value_shifted, colour = variable)) +
  geom_line()