查找行组的IQR
我想在数据帧中找到一系列值的IQR。这些值也被分组,因此我需要在数据帧中找到每个组的IQR。我有下表:查找行组的IQR,r,iqr,R,Iqr,我想在数据帧中找到一系列值的IQR。这些值也被分组,因此我需要在数据帧中找到每个组的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 1
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
预期IQR应如下所示:
Molarity IQR
100 324.25
50 258
25 363
10 519.5
5 400
任何帮助都将不胜感激。如果有人知道我如何为IQR执行此功能,当存在一组斑点大小(斑点大小范围为100pl-400pl)时,包括摩尔浓度类别,我希望听到他们
非常感谢。不清楚您的问题是关于聚合,还是关于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
IQR
使用quantile
函数,该函数依次使用9
算法和type
参数。默认情况下,它使用type=7
。例如,您可以更改聚合(Cy3.DNA1.100pl.1uM$Cy3\u荧光,列表(Molarity=Cy3.DNA1.100pl.1uM$Molarity,Spot\u Size=Cy3.DNA1.100pl.1uM$Spot\u Size)的类型(Cy3.DNA1.100pl.1uM$Spot\u Size),IQR,type=5)来自的帮助页面的IQR(x,na.rm=FALSE,type=7)
你好,谢谢您的评论。我尝试了各种类型,但是它们没有返回真正的IQR。我想这可能是一个问题,因为我想找到5、10、25、50和100组的IQR,其中主要组是光斑大小。我认为IQR的计算是将组作为数值,而不是类别。虽然我不知道如何解决这个问题。最好也发布预期IQR作为示例数据。没问题,请参阅修订后的问题不知道您是如何计算的。根据?IQR
注意,此函数使用“分位数”函数计算四分位数,而不是遵循Tukey的建议,即“IQR(x)=分位数(x,3/4)-分位数(x,1/4)”