2014-12-01 2 views
3

데이터 프레임에서 일련의 값의 IQR을 찾고 싶습니다. 이 값들은 그룹화되어 있으므로 데이터 프레임에서 각 그룹의 IQR을 찾아야합니다.행 그룹의 IQR 찾기

aggregate(Cy3.DNA1.100pl.1uM$Cy3_Fluorescence, list(Molarity= 
    Cy3.DNA1.100pl.1uM$Molarity, Spot_Size=Cy3.DNA1.100pl.1uM$Spot_Size), IQR) 

이 나에게 OUPUT 제공 :

Molarity Spot_Size x 
     5  100pl 384 
    10  100pl 576 
    25  100pl  65 
    50  100pl 221 
    100  100pl 129 

이 출력 그룹의 모든 몰 농도를 정확하게 내가 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은 정확하지 않습니다. 위의 코드 대신 IQR X 값 (함수 값)의 함수로서 평균 경우도록 정확 :

Molarity IQR 
100  324.25 
50  258 
25  363 
10  519.5 
5  400 

도움이 다음과 같이

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이어야 많이 감사하겠습니다. 어떤 사람이 IQR에 대해이 기능을 수행 할 수있는 아이디어가 있다면, 모액 카테고리를 포함한 스팟 사이즈 그룹 (스팟 사이즈 범위는 100pl-400pl입니다)이있을 때 나는 그것들을 듣고 싶습니다.

친절하게 감사드립니다.

+0

차례로''type' 인수 9' 알고리즘을 사용하는''IQR' 사용 quantile' 기능 :

은 훨씬 스폿 크기와 몰 농도에 기초하여 응집 등 여기 두 가지이다. 기본적으로'type = 7'을 사용합니다. 예를 들어,'type' 집계를 변경할 수 있습니다 (Cy3.DNA1.100pl.1uM $ Cy3_Fluorescence, list (Molarity = Cy3.DNA1.100pl.1uM $ Molarity, Spot_Size = Cy3.DNA1.100pl.1uM $ Spot_Size) , IQR, type = 5)'? IQR'' IQR (x, na.rm = FALSE, type = 7)의 도움말 페이지에서' – akrun

+0

안녕하세요. Akrun, 의견을 보내 주셔서 감사합니다. 그러나 다양한 IQR을 반환하지는 않습니다. 5,10,25,50 및 100 그룹의 IQR을 스팟 크기의 주요 그룹으로 찾으려는 경우 문제가 될 수 있다고 생각합니다. IQR은 카테고리가 아닌 숫자 값으로 그룹을 계산하는 것으로 생각됩니다. 나는 이것을 어떻게 해결할 지 모르지만. – MRF

+0

예제 데이터에 대한 예상 IQR을 게시하는 것이 더 나을 수도 있습니다. – akrun

답변

3

귀하의 문제가 집계에 관한 것인지 또는 IQR에 대한 귀하의 (?) 정의에 관한 것인지 확실하지 않습니다. IQR을 계산하는 방법은 여러 가지가 있습니다 (thisthis 참조). 내가 말할 수있는 한 그들 중 누구도 귀하의 게시물에서 결과를 산출하지 못합니다.

# 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 
+0

대단히 감사합니다. jlhoward가 이것을 정리했습니다! – MRF