如何计算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