R - 在使用 ChemoSpec 软件包之前,从单独数据集中的重复数据计算平均值



我对R相对较新,因此如果这个问题有明显的答案,我深表歉意。

基本上,我正在通过 FT-IR 重复分析样本。每个读数的数据都放在一个单独的.csv文件中。csv 文件有两列(波长和吸光度(,由于波长不同,大约有 3500 行。由于测量是一式两份进行的,因此有 30 个单独的.csv文件(分析的 15 个样本中每个 2 个(,称为"1.csv"、"2.csv"......"30.csv"。"1.csv"和"2.csv"都是样本1的重复项,样本2的"3.csv"和"4.csv"等。

我需要对 ChemoSpec 包中的每个重复使用平均吸光度值。我显然可以在 excel 中计算出来,但是将来当我有更多样本要分析时,这将很耗时。有没有办法在 R 中计算这些平均值?

这是一个简化的可重现示例,其中 csv1 和 csv2 都是样本样本的重复:

wavelength <- c(500, 550, 600)
absorbance <- c(2, 4, 3)
csv1 <- data.frame(wavelength, absorbance)
csv2 <- data.frame(wavelength, absorbance)
mean <- (csv1+csv2)/2

我想我需要将 csv 文件读入 R,然后以与上述类似的方式计算每个样本的平均值,但我不确定如何做到这一点。

谢谢。

假设您在 CSV 文件中命名了列,您通常会执行以下操作:

file_names <- list.files(pattern = ".csv")
all_data <- lapply(file_names, read.csv, header = TRUE)

将所有 CSV 文件读取到列表中。然后,如果你只对吸光度感兴趣,你可以做

all_data_abs <- sapply(all_data, function(df) df$absorbance)
all_data_abs <- as.data.frame(t(all_data_abs))

但这假设每个文件的行数相同。是这样吗?使用 定义复制组

no_replicates <- 2
all_data_abs$grps <- rep(1:(nrow(all_data_abs)/no_replicates), 
each = no_replicates)

并使用从 dplyr 到每组计算平均值的summarize_all:

library(dplyr)
all_data_abs %>% group_by(grps) %>% summarize_all(mean)

但是在看不到原始文件的情况下有点猜测

最新更新