基本上,我是通过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,然后以与上述类似的方式计算每个样本的平均值,但是我不知道该怎么做。
感谢。
答案 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)
但是如果没有能够看到原始文件那就有点猜测