2017-08-09 56 views
0

我有這樣的輸入數據值的行:選擇具有與低於閾值在它們之間的標準偏差

  Condition1(Day1) Condition1(Day2) Condition2(Day1) Condition2(Day2) 
Sample1  1.345   2.456   7.898   8.134 
Sample2... 

我想選擇具有低於天之間的標準偏差的樣品(行)至少是兩個條件中的一個的閾值。

謝謝!

+1

您嘗試過某些東西了嗎? – drmariod

+0

你會如何計算單行的標準偏差?或者每個'Sample'有多行? – LAP

+0

嗨!我想我沒有很好地解釋我的問題。我有兩個不同的條件(1和2)和兩個不同的重複(第1天和第2天),約有100個樣本(行)。我的想法是根據條件1(第1天和第2天)和條件2計算每行中的SD。在此之後,我想對樣本進行「排列」,考慮其中一個條件的SD。最後我想選擇最低的SD樣本。 – Tato14

回答

1

我希望這有助於。

sample=data.frame("cond1_day1"=c(1.345,1.456,1.7,2,1,4.2), 
       "cond1_day2"=c(2.456,1,5,1,2,2.2), 
       "cond2_day1"=c(7.898,7,2,3,4,5), 
       "cond2_day2"=c(8.134,4.5,1,2,9,1)) 
##calculating standard deviation between days for each conditions 
sd=t(apply(sample,1,function(x) c(sd(c(x[1],x[2])),sd(c(x[3],x[4]))))) 
sample$sd_cond1=sd[,1] 
sample$sd_cond2=sd[,2] 
##getting subsets if sd crosses threshold for any of the condition 
threshold=0.8 
sample[sample$sd_cond1>threshold | sample$sd_cond2>threshold,] 

#output 
cond1_day1 cond1_day2 cond2_day1 cond2_day2 sd_cond1 sd_cond2 
1.456  1.0   7  4.5  0.3224407 1.7677670 
1.700  5.0   2  1.0  2.3334524 0.7071068 
1.000  2.0   4  9.0  0.7071068 3.5355339 
4.200  2.2   5  1.0  1.4142136 2.8284271 
+0

謝謝!這就是我一直在尋找的,唯一的問題是我在尋找最低的而不是最大的標準樣品。但在任何情況下真棒:)! – Tato14

+0

您可以在這種情況下使用「<」sample [sample $ sd_cond1 pali56