如何通过基线时间点对科学数据进行双重标准化,然后在R中进行控制

如何通过基线时间点对科学数据进行双重标准化,然后在R中进行控制,r,data-analysis,R,Data Analysis,我有一个data.table,其中包含一系列属于特定油井的参数(振幅、速率、面积等,总共有23个)(如果你愿意,单独的实验总共有48个),按处理方式分组(通常总共有10个),所有这些都在不同的时间点(可能有很多)。我想首先取每口井,将所有参数标准化(如中所示,除以)基线(零时间之前的所有时间点)的中值参数,然后取标准化数据并再次标准化,但这次由对照治疗组对每个时间点进行标准化。我还想提前查看基线和控制数据,并在必要时标记和删除异常值,然后再进行规范化(尽管这在目前并不十分重要;一旦我意识到如何完

我有一个data.table,其中包含一系列属于特定油井的参数(振幅、速率、面积等,总共有23个)(如果你愿意,单独的实验总共有48个),按处理方式分组(通常总共有10个),所有这些都在不同的时间点(可能有很多)。我想首先取每口井,将所有参数标准化(如中所示,除以)基线(零时间之前的所有时间点)的中值参数,然后取标准化数据并再次标准化,但这次由对照治疗组对每个时间点进行标准化。我还想提前查看基线和控制数据,并在必要时标记和删除异常值,然后再进行规范化(尽管这在目前并不十分重要;一旦我意识到如何完成规范化,我可能会解决这个问题)

例如,我将创建一个类似于我在原始仪器数据分析代码中生成的data.table:

dt = data.table(
  wellID = as.factor(c ("A4", "B4", "C5", "D5", "A4", "B4", "C5", "D5","A4", 
  "B4", "C5", "D5")),
  treatment = as.factor (c ("Control", "Control", "Drug", "Drug", "Control", 
  "Control", "Drug", "Drug", "Control", "Control", "Drug", "Drug")),
  time_h = c (-0.2, -0.2, -0.2, -0.2, -0.1, -0.1, -0.1, -0.1, 4, 4, 4, 4),
  area = runif (12, min = 0.5, max = 0.9),
  amp = runif (12, min = 0.1, max = 0.2),
  rate = runif (12, min = 33, max = 38)
)
我试过这样的方法:

baseline = subset (dt, subset = time_h < 0 )
为了得到每个井的基线中值,但我真的不知道如何在dt中标准化数据,以便井和参数匹配,然后进行第二次标准化

无论如何,我认为这不是一个好策略,我应该以某种方式解构和重建我的数据集吗


感谢您的帮助

如果这不是您想要的,那么可能需要对子集进行一些调整。当
time\u h<0
treatment==“Control”

set.seed(21)#问题的良好实践,因此结果是可重复的

谢谢@manotheshark!原来我对data.tables一无所知,现在知道的更多了!我必须将by=“wellID”添加到第一个标准化中,并将by=“time\u h”添加到第二个标准化中,以便进行适当的子集设置。出于某种原因,在按“params”进行子集设置并将结果保存到“params”时出现了问题,因此我必须创建新列以保存到“norm_params”。无论如何,这是首选的,以保留原始数据
base_medians = by (baseline [ , (4: ncol (baseline)) ], baseline$ wellID, 
           function (x) {
             apply (x, 2, median)
           })
set.seed(21)  #good practice for questions so results are reproducible

parm <- c("area", "amp", "rate")  #parameters to include
dt[, (parm) := lapply(.SD, function(x) x / median(x[time_h < 0])), .SDcols = parm]
dt[, (parm) := lapply(.SD, function(x) x / median(x[treatment == "Control"])), .SDcols = parm]

    wellID treatment time_h      area       amp      rate
 1:     A4   Control   -0.2 0.9541129 0.7538275 0.9403151
 2:     B4   Control   -0.2 0.7040382 1.1530667 1.0081769
 3:     C5      Drug   -0.2 0.9134096 0.8369863 0.9780808
 4:     D5      Drug   -0.2 0.6721809 0.7392173 1.0067250
 5:     A4   Control   -0.1 1.0354136 1.0865999 0.9978287
 6:     B4   Control   -0.1 1.0162338 0.9134001 0.9918002
 7:     C5      Drug   -0.1 0.6334486 1.0678871 1.0280474
 8:     D5      Drug   -0.1 0.6664317 1.1639014 0.9696164
 9:     A4   Control    4.0 1.0477798 0.7204991 1.0021713
10:     B4   Control    4.0 0.9837662 1.1454020 1.0149003
11:     C5      Drug    4.0 0.8985494 1.2648977 1.0190920
12:     D5      Drug    4.0 1.0239782 1.3705952 0.9268626