根据ID从下一个值中减去第一个值

时间:2016-05-10 16:09:51

标签: r dataframe data-manipulation

我使用R而我有一个名为" g1"的数据框。其中包含小鼠的肿瘤体积,均具有ID。该研究持续数周,在此期间,小鼠从试验中移除。我想根据ID计算每只小鼠的相对肿瘤体积,通过从后一天的值中减去第0天的值,似乎无法想出一个好的方法来做到这一点。例如,我有

Mouse      Volume     Day
  711    7.323704       0
  712   39.751250       0
  713   22.568248       0
  714  120.376612       0
  706   85.169190       0
  707   29.695617       0
  708   65.026840       0
  709   33.697400       0
  711   44.380412       7
  712   49.326144       7
  713   30.275336       7
  714  136.680960       7
  709   41.739454       7
将小鼠706,707,709从研究中取出(这不断发生)。我想创建一个名为" RelVol"的列。即(第7天音量 - 第0天音量)和(第14天音量 - 第0天音量)等等等等,直到我的df结束。

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为这可能适合你。

使用data.table

您可以非常轻松地将data.frame转换为data.table:

 df <- data.table(OriginalDataFrame)

然后使用:

 df[, RelVol:= c(Volume - Volume[1]), by = Mouse]

其中df是您的data.table of values。

您将获得一个新列,每个日期与每个鼠标的第0天相差不一。&#39;

:)