繁体   English   中英

如何将数据系列标准化为起始值 = 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 -value 减去每个向量的起始值。

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 值移动每个变量。

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()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM