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