如何计算R中每天的增长率
我还是如何计算R中每天的增长率,r,R,我还是R的新手,下面是我在现场测量的贻贝数据。我想获得每个locID(我有A1,A2,A3,A4,B1,B2,B3,C1,C2,C3,C4,D1,D2,D3,D3和D4一个功能循环,但理想情况下只包括对于10毫米贻贝和15毫米贻贝,以及每个深度,分别使用C1。因此,从第一个样本中获得每天的生长率将是从9,92中减去长度11,08(08-08-2017 39 1 C1 0,5 10蓝色)(03-07-2017 3 1 C1 0,5 10蓝色)并将其除以天数(08-08-2017 39 1 C1 0
R
的新手,下面是我在现场测量的贻贝数据。我想获得每个locID
(我有A1
,A2
,A3
,A4
,B1
,B2
,B3
,C1
,C2
,C3
,C4
,D1
,D2
,D3
,D3
和D4
一个功能循环,但理想情况下只包括对于10毫米贻贝和15毫米贻贝,以及每个深度,分别使用C1。因此,从第一个样本中获得每天的生长率将是从9,92
中减去长度11,08
(08-08-2017 39 1 C1 0,5 10蓝色
)(03-07-2017 3 1 C1 0,5 10蓝色
)并将其除以天数(08-08-2017 39 1 C1 0,5 10蓝色11,08
)-3
(03-07-2017 3 1 C1 0,5 10蓝色9,92
)
有谁能给我一些关于如何在R
中找到计算方法的建议吗?我知道我要求很多,我希望有人愿意花时间来帮助我
提前谢谢你
date n= session locID depth org_length replica length
03-07-2017 3 1 C1 0,5 10 blue 9,92
03-07-2017 3 1 C1 2,5 10 blue 10,33
03-07-2017 3 1 C1 4,5 10 blue 9,78
03-07-2017 3 1 C1 6,5 10 blue 10,45
03-07-2017 3 1 C1 0,5 10 green 9,89
03-07-2017 3 1 C1 2,5 10 green 10,32
03-07-2017 3 1 C1 4,5 10 green 9,86
03-07-2017 3 1 C1 6,5 10 green 10,28
03-07-2017 3 1 C1 0,5 10 purple 10,36
03-07-2017 3 1 C1 4,5 10 purple 10,35
03-07-2017 3 1 C1 6,5 10 purple 10,47
03-07-2017 3 1 C1 0,5 10 red 10,48
03-07-2017 3 1 C1 2,5 10 red 9,64
03-07-2017 3 1 C1 4,5 10 red 10,08
03-07-2017 3 1 C1 6,5 10 red 10,37
03-07-2017 3 1 C1 0,5 15 blue 15,51
03-07-2017 3 1 C1 2,5 15 blue 14,84
03-07-2017 3 1 C1 4,5 15 blue 15,53
03-07-2017 3 1 C1 6,5 15 blue 14,54
03-07-2017 3 1 C1 0,5 15 green 14,89
03-07-2017 3 1 C1 2,5 15 green 15,29
03-07-2017 3 1 C1 4,5 15 green 14,97
03-07-2017 3 1 C1 6,5 15 green 14,77
03-07-2017 3 1 C1 0,5 15 purple 15,04
03-07-2017 3 1 C1 4,5 15 purple 15,17
03-07-2017 3 1 C1 6,5 15 purple 15,33
03-07-2017 3 1 C1 0,5 15 red 14,86
03-07-2017 3 1 C1 2,5 15 red 15,27
03-07-2017 3 1 C1 4,5 15 red 14,55
03-07-2017 3 1 C1 6,5 15 red 15,12
13-07-2017 13 1 C1 2,5 10 purple 10,52
13-07-2017 13 1 C1 2,5 15 purple 15,62
08-08-2017 39 1 C1 0,5 10 blue 11,08
08-08-2017 39 1 C1 2,5 10 blue 12,95
08-08-2017 39 1 C1 4,5 10 blue 10,67
08-08-2017 39 1 C1 6,5 10 blue 10,38
08-08-2017 39 1 C1 0,5 10 green 10,91
08-08-2017 39 1 C1 2,5 10 green 12,56
08-08-2017 39 1 C1 4,5 10 green 10,81
08-08-2017 39 1 C1 6,5 10 green 10,69
08-08-2017 39 1 C1 0,5 10 purple 11,25
08-08-2017 39 1 C1 2,5 10 purple 10,83
08-08-2017 39 1 C1 4,5 10 purple 10,37
08-08-2017 39 1 C1 6,5 10 purple 10,5
08-08-2017 39 1 C1 0,5 10 red 10,45
08-08-2017 39 1 C1 2,5 10 red 11,39
08-08-2017 39 1 C1 4,5 10 red 12,02
08-08-2017 39 1 C1 6,5 10 red 10,32
08-08-2017 39 1 C1 0,5 15 blue 15,95
08-08-2017 39 1 C1 2,5 15 blue 15,75
08-08-2017 39 1 C1 4,5 15 blue 15,48
08-08-2017 39 1 C1 6,5 15 blue 14,8
08-08-2017 39 1 C1 0,5 15 green 16,37
08-08-2017 39 1 C1 2,5 15 green 16,66
08-08-2017 39 1 C1 4,5 15 green 15,37
08-08-2017 39 1 C1 6,5 15 green 14,67
08-08-2017 39 1 C1 0,5 15 purple 14,96
08-08-2017 39 1 C1 2,5 15 purple 15,49
08-08-2017 39 1 C1 4,5 15 purple 15,15
08-08-2017 39 1 C1 6,5 15 purple 15,67
08-08-2017 39 1 C1 0,5 15 red 16,21
08-08-2017 39 1 C1 2,5 15 red 15,19
08-08-2017 39 1 C1 4,5 15 red 15,14
08-08-2017 39 1 C1 6,5 15 red 15,54
05-09-2017 67 1 C1 0,5 15 blue 15,94
05-09-2017 67 1 C1 2,5 15 blue 15,68
05-09-2017 67 1 C1 4,5 15 blue 15,48
05-09-2017 67 1 C1 6,5 15 blue 14,5
05-09-2017 67 1 C1 0,5 15 green 16,33
05-09-2017 67 1 C1 2,5 15 green 16,7
05-09-2017 67 1 C1 4,5 15 green 15,33
05-09-2017 67 1 C1 6,5 15 green 14,62
05-09-2017 67 1 C1 0,5 15 purple 14,96
05-09-2017 67 1 C1 2,5 15 purple 15,58
05-09-2017 67 1 C1 4,5 15 purple 15,17
05-09-2017 67 1 C1 6,5 15 purple 15,64
05-09-2017 67 1 C1 0,5 15 red 16,17
05-09-2017 67 1 C1 2,5 15 red 15,17
05-09-2017 67 1 C1 4,5 15 red 15,1
05-09-2017 67 1 C1 6,5 15 red 15,57
05-09-2017 67 1 C1 0,5 10 blue 11,08
05-09-2017 67 1 C1 2,5 10 blue 12,95
05-09-2017 67 1 C1 4,5 10 blue 11,15
05-09-2017 67 1 C1 6,5 10 blue 10,47
05-09-2017 67 1 C1 0,5 10 green 10,91
05-09-2017 67 1 C1 2,5 10 green 12,52
05-09-2017 67 1 C1 4,5 10 green 10,88
05-09-2017 67 1 C1 6,5 10 green 10,7
05-09-2017 67 1 C1 0,5 10 purple 11,3
05-09-2017 67 1 C1 2,5 10 purple 10,93
05-09-2017 67 1 C1 4,5 10 purple 10,35
05-09-2017 67 1 C1 6,5 10 purple 10,51
05-09-2017 67 1 C1 0,5 10 red 10,45
05-09-2017 67 1 C1 2,5 10 red 11,37
05-09-2017 67 1 C1 4,5 10 red 12,03
05-09-2017 67 1 C1 6,5 10 red 10,2
29-09-2017 91 1 C1 0,5 15 blue 15,95
29-09-2017 91 1 C1 2,5 15 blue 15,64
29-09-2017 91 1 C1 4,5 15 blue 15,47
29-09-2017 91 1 C1 6,5 15 blue 14,55
29-09-2017 91 1 C1 0,5 15 green 16,37
29-09-2017 91 1 C1 2,5 15 green 16,72
29-09-2017 91 1 C1 4,5 15 green 15,33
29-09-2017 91 1 C1 6,5 15 green 14,61
29-09-2017 91 1 C1 0,5 15 purple 14,81
29-09-2017 91 1 C1 2,5 15 purple 15,54
29-09-2017 91 1 C1 4,5 15 purple 15,3
29-09-2017 91 1 C1 6,5 15 purple 15,65
29-09-2017 91 1 C1 0,5 15 red 16,19
29-09-2017 91 1 C1 2,5 15 red 15,14
29-09-2017 91 1 C1 4,5 15 red 15,07
29-09-2017 91 1 C1 6,5 15 red 15,51
29-09-2017 91 1 C1 0,5 10 blue 11,2
29-09-2017 91 1 C1 2,5 10 blue 12,92
29-09-2017 91 1 C1 4,5 10 blue 11,51
29-09-2017 91 1 C1 6,5 10 blue 10,43
29-09-2017 91 1 C1 0,5 10 green 10,89
29-09-2017 91 1 C1 2,5 10 green 12,5
29-09-2017 91 1 C1 4,5 10 green 10,67
29-09-2017 91 1 C1 6,5 10 green 10,85
29-09-2017 91 1 C1 0,5 10 purple 11,28
29-09-2017 91 1 C1 2,5 10 purple 11,14
29-09-2017 91 1 C1 4,5 10 purple 10,95
29-09-2017 91 1 C1 6,5 10 purple 10,61
29-09-2017 91 1 C1 0,5 10 red 10,44
29-09-2017 91 1 C1 2,5 10 red 11,96
29-09-2017 91 1 C1 4,5 10 red 12,67
29-09-2017 91 1 C1 6,5 10 red 10,18
这就是你想要的吗
# sort the data (important)
df <- df[order(df$locID, df$depth, df$org_length, df$replica, df$n.), ]
# calculate rates
rates <- by(df, list(df$locID, df$depth, df$org_length, df$replica), function(x) {
c(NA, diff(x$length)/diff(x$n.))})
rate_overall <- by(df, list(df$locID, df$depth, df$org_length, df$replica), function(x) {
rep(diff(x$length[c(1, length(x$length))])/diff(x$n.[c(1, length(x$n.))]), nrow(x))})
# add rates to data
df$growth_rate <- unlist(rates)
df$overall_growth_rate <- unlist(rate_overall)
非常感谢您的快速回复!我确实想分割locID、深度、组织长度和副本的数据。唯一的问题是,我每个样本有多个测量天数,所以我认为用一个公式来分割差异是行不通的。如果我只使用开始时测得的长度和结束时测得的长度,它可能会起作用。另外,当我输入了你的代码,我得到了以下错误:df$locID中的错误:类型为“closure”的对象不可再附加,你知道为什么吗?提前谢谢你,我期待收到你的来信!关于你的错误,代码假设你的数据存储在一个名为df
的对象中,所以要么这样做,要么用df
代替w无论您的数据集的名称是什么。该函数基于任何两个连续测量事件计算速率,例如,在03-07-2017
和08-08-2017
,08-08-2017
和05-09-2017
之间,以及在05-09-2017
和29-09-2017
之间。如果这不是您想要的,请澄清。当我在做这件事的时候,我会编辑代码,使其更简单更快。再次感谢您的快速响应!基于连续测量事件的计算正是我想要的,太好了!我的df中存储的数据被写为2017-07-03而不是2017-07-03,这有什么区别吗?最后一个问题:我还需要一个带有s的列每个样本单独计算的增长率(例如蓝色,10毫米,0.5深),你们能帮我吗?你们可以这样做:df$sums
> head(df)
date n. session locID depth org_length replica length growth_rate overall_growth_rate
1 03-07-2017 3 1 C1 0.5 10 blue 9.92 NA 0.0145454545
33 08-08-2017 39 1 C1 0.5 10 blue 11.08 0.03222222 0.0145454545
81 05-09-2017 67 1 C1 0.5 10 blue 11.08 0.00000000 0.0145454545
113 29-09-2017 91 1 C1 0.5 10 blue 11.20 0.00500000 0.0145454545
5 03-07-2017 3 1 C1 0.5 10 green 9.89 NA 0.0294318182
37 08-08-2017 39 1 C1 0.5 10 green 10.91 0.07277778 0.0294318182