r - 在不知道重复次数的情况下,如何计算同一样本的重复实验值的平均值?
问题描述
我有一个 csv 文件,其中包含许多样本的实验值数据集,有时还会复制相同的样本。对于复制,我只考虑属于同一样本的复制的平均值。问题是,重复次数各不相同,可以是 2、3、4 等等......
我的代码不正确,因为它应该仅在重复数为 2 时才有效(因为我使用循环将一个 sampleID 与循环中的前一个 sampleID 进行比较)。另外,我的代码不起作用,它为我的所有样本添加了相同的平均值,这是不对的。我认为循环开始时也存在问题。因为当 x=1 时,x-1=0 不对应任何值,所以可能会导致代码无法工作?我是 R 的初学者,我从未接受过任何课程或培训,我正在接受培训以自学,所以提前感谢您的帮助。
我的数据集:
预期输出:
PS:在这个例子中,重复数是 2。但是,它可能会因样本而异,有时是 2,有时是 3、4 等等......
for (x in length(dat$Sample)){
if (dat$Sample[x]==dat$Sample[x-1]){
dat$Average.OD[x-1] <- mean(dat$OD[x], dat$OD[x-1])
dat$Average.OD[x] <- NA
}
}
解决方案
让我通过 data.table 向您展示可能的解决方案。
#Data
data <- data.frame('Sample'=c('Blank','Blank','STD1','STD1'),
'OD'=c(0.07,0.08,0.09,0.10))
#Code
#Converting our data to data.table.
setDT(data)
#Finding the average of OD by Sample Column. Here Sample Column is the key.If you want it by both Sample and Replicates, pass both of them in by and so on.
data[, AverageOD := mean(OD), by = c("Sample")]
#Turning all the duplicate AverageOD values to NA.
data[duplicated(data, by = c("Sample")), AverageOD := NA]
#Turning column name of AverageOD to Average OD
names(data)[which(names(data) == "AverageOD")] = 'Average OD'
如果您有任何问题,请告诉我。
推荐阅读
- ios - 如何在 azure devops 管道上运行 iOS 机器人 appium 测试用例?
- r - R-Count 唯一 ID,记录在多个大文本文件中
- javascript - sessionStorage 中字符串化数组的 JSON.parse() 出错
- python - 如何通过在一个叫做函数的句子中对齐键来获得维度的数量?
- batch-file - 在批处理文件中查找命令以读取“wmic diskdrive get serialnumber”并在序列号匹配时给我一个输出
- python - 整个会话的单个异步连接到数据库
- python - 如何将传入的 UDP 消息存储在数据库中并通过 REST API 访问?
- python - 如何将 python 代码更改为应用程序以在与同一文件夹中的文件一起保存的任何文件夹中运行
- c# - 忽略一个序列化调用的 [JsonConverter] 属性
- java - 如何在片段抛出适配器中传递接口?