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

时间:2018-05-22 13:23:10

标签: r csv

如果对这个问题有明显的答案,那么我对R来说相对较新,因此道歉。

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

我需要使用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,然后以与上述类似的方式计算每个样本的平均值,但是我不知道该怎么做。

感谢。

1 个答案:

答案 0 :(得分:0)

假设您已在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)

并使用ddlyr中的summarize_all到每组的计算平均值:

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

但是如果没有能够看到原始文件那就有点猜测