假设我有以下从Excel导入的数据表:
glasses_of_water <- tribble(
~glass, ~hours, ~mass, ~volume, ~temp,
#-------|--------|--------|---------|--------|
"A", "0", 500, 5, 20,
"B", "0", 500, 5, 20,
"C", "0", 500, 5, 20,
"B", "10", 450, 5, 22,
"C", "10", 250, 2.5, 20,
"A", "10", 400, 4, 21,
"A", "30", 200, 1, 23,
"B", "30", 350, 3.5, 26,
"C", "30", 0, 0, 20,
"C", "20", 0, 0, 20,
"B", "20", 400, 4, 24,
"A", "20", 300, 3, 22,
"A", "42", 200, 1, 23,
"B", "44", 350, 3.5, 26,
"C", "46", 0, 0, 20,
)
在从0小时到大约50小时的时间点分析了三杯水。我想为每个测量参数(质量、体积、温度)绘制线图,从中可以看到这些参数如何随时间变化--然而,我想将每个参数视为其初始值的比率,其中0小时值为1.0,然后将所有未来值与之进行比较。
例如,玻璃C开始时的质量为1.0,在10小时时间点降低到0.5,然后在20小时时间点变为0.0。
目前,我将数据存储在Excel工作簿中。我每隔几天就用新的测量值更新数据,并且我有一个单独的工作表专门用于“标准化”值,其中我手动将每个测量值除以受试者在零时的测量值。这很耗时,如果可能,我希望通过R脚本完成此操作。
我经常使用tidyverse套件,我试过...
data0 <- filter(glasses_of_water, hours == "0")
data <- glasses_of_water
ggplot(data) + geom_line(mapping = aes(x = data$hours, y = data$mass/data0$mass, group = glass, color = glass))
......我为零时间点创建了一个对象,并将所有数据除以这些值。这在这个过于简单的示例中有效,但似乎经常会崩溃,尤其是对于由各种因素分隔的较大数据集,以及facet_grids等。我有一些数据集,有数千行和50列。我的实际数据不是tribble格式,它只是一个Excel导入程序;会有问题吗
无论如何,我的问题是:有更简单的方法吗?任何帮助都将不胜感激。
1条答案
按热度按时间vof42yt11#
一种分别对每组进行归一化的方法。