我想在dataframe中找到一系列值的IQR。这些值也是分组的,因此我需要在dataframe中找到每个组的IQR。我有下表:
Block DNAname Spot_Size Molarity Cy3_Fluorescence
1 DNA 01 100pl 100 14266
1 DNA 01 100pl 100 16020
1 DNA 01 100pl 100 15705
1 DNA 01 100pl 100 15783
1 DNA 01 100pl 100 15834
1 DNA 01 100pl 50 12248
1 DNA 01 100pl 50 12209
1 DNA 01 100pl 50 12511
1 DNA 01 100pl 50 12316
1 DNA 01 100pl 50 12469
1 DNA 01 100pl 25 9626
1 DNA 01 100pl 25 9804
1 DNA 01 100pl 25 9794
1 DNA 01 100pl 25 10020
1 DNA 01 100pl 25 9739
1 DNA 01 100pl 10 7158
1 DNA 01 100pl 10 6802
1 DNA 01 100pl 10 7378
1 DNA 01 100pl 10 5949
1 DNA 01 100pl 10 7484
1 DNA 01 100pl 5 5257
1 DNA 01 100pl 5 5560
1 DNA 01 100pl 5 6076
1 DNA 01 100pl 5 5925我运行以下代码来查找IQR:
aggregate(Cy3.DNA1.100pl.1uM$Cy3_Fluorescence, list(Molarity=
Cy3.DNA1.100pl.1uM$Molarity, Spot_Size=Cy3.DNA1.100pl.1uM$Spot_Size ), IQR)这给了我一个输出:
Molarity Spot_Size x
5 100pl 384
10 100pl 576
25 100pl 65
50 100pl 221
100 100pl 129此输出分组所有的磨擦正确,但IQR是不正确的。如果上面的代码将平均值作为函数而不是IQR,则x的值(函数值)是正确的:
Molarity Spot_Size x
5 100pl 5752.4
10 100pl 6954.2
25 100pl 9796.6
50 100pl 12350.6
100 100pl 15521.6预期的IQRS应如下:
Molarity IQR
100 324.25
50 258
25 363
10 519.5
5 400任何帮助都将不胜感激。如果有人知道我如何为IQR执行这个函数,那么当有一组spot大小( spot大小范围为100pl-400pl)时,包括我想要听到的流度类别,我想听听它们。
非常感谢。
发布于 2014-12-01 21:03:55
还不清楚您的问题是关于聚合,还是关于您的(??)IQR的定义。计算IQR的方法很多(参见这和这)。据我所知,他们中没有一个在你的帖子中给出结果。
关于根据光斑大小和摩尔度进行聚合的方法,这里有两种方法:
# use aggregate(...) in base R - will be slow with large datasets
aggregate(Cy3_Fluorescence~Molarity+Spot_Size,df,IQR)
# Molarity Spot_Size Cy3_Fluorescence
# 1 5 100pl 478.5
# 2 10 100pl 576.0
# 3 25 100pl 65.0
# 4 50 100pl 221.0
# 5 100 100pl 129.0
# use data.table - will be extremely fast.
library(data.table)
setDT(df)[,list(IQR=IQR(Cy3_Fluorescence)),by=list(Molarity,Spot_Size)]
# Molarity Spot_Size IQR
# 1: 100 100pl 129.0
# 2: 50 100pl 221.0
# 3: 25 100pl 65.0
# 4: 10 100pl 576.0
# 5: 5 100pl 478.5发布于 2022-10-06 13:42:52
我知道这是个旧帖子,但我今天遇到了这个问题,更容易解决:
library(tidyverse)
#get IQR
a <- df %>% group_by(Spot_Size) %>% group_by(Molarity) %>% summarise(IQR(Cy3_Fluorescence))
a <- data.frame(a)
a
# Molarity IQR.Cy3_Fluorescence.
# 5 478.5
# 10 576.0
# 25 65.0
# 50 221.0
# 100 129.0https://stackoverflow.com/questions/27230500
复制相似问题