【发布时间】:2020-03-31 16:21:39
【问题描述】:
library(ggplot2)
library(data.table)
set.seed(100)
# Making data table
date <- rep(1:10, each=10)
id <- rep(1:10, 10)
grp <- rep(1:2, each=5)
# Adding random body size per group and averaging
dt <- as.data.table(cbind(date, grp, id))
dt[grp==1, bodysize:=rnorm(50, mean=6)]
dt[grp==2, bodysize:=rnorm(50, mean=7)]
dt <- dt[, mean.Body:=mean(bodysize), list(date, grp)]
# Plot
ggplot(data=dt, aes(x=date, y=mean.Body, group=grp)) +
geom_line(position="identity", aes(color=as.factor(grp)), size= 2, linetype= 2) +
geom_point(size=2) +
theme_minimal() +
labs(x= "Date", y= "Body size (mm)", color="Group" )
我的问题是如何实现一个函数来计算数据表中个人几天内的增长率。这是形态学数据,因此增长率将计算为 log(body size day(i)) - log(body size day (i-1))。换句话说,(今天的体型)-(昨天的体型)。我每组有 5 个人,为期 10 天。找出每个人每天的增长率是这篇文章的目标,并重新创建发布的图表,但每天的增长率。附上一些模拟数据。
任何建议将不胜感激。
【问题讨论】:
标签: r ggplot2 data.table time-series rate