2014-03-14 115 views
0

以下是我工作的一個例子的數據幀:編寫條件均值參數

 Age Exon.1 Exon.2 Exon.3 Exon.4 Tissue 
1 8 pcw 1.069621 2.090989 2.815579 2.599460 HIP 
2 9 pcw 0.359670 1.327652 0.997034 1.128186 HIP 
3 12 pcw 1.170716 7.368116 4.855342 4.868139 HIP 
4 12 pcw 0.618367 0.780580 1.564149 2.119555 HIP 
5 12 pcw 0.592584 3.233361 1.750408 4.784493 HIP 
6 13 pcw 1.634750 3.852918 5.822762 4.215661 HIP 
7 13 pcw 1.076103 3.653933 4.616696 4.288468 HIP 
8 13 pcw 0.530033 1.572620 1.643339 2.447955 HIP 
9 16 pcw 0.607179 6.393372 4.284723 6.054567 HIP 
10 16 pcw 1.649528 8.162135 6.258901 5.672448 HIP 
11 17 pcw 3.857213 6.297120 2.644501 6.823737 HIP 
12 19 pcw 2.025933 2.471025 3.151600 5.400733 HIP 
13 21 pcw 3.666728 12.037541 8.605424 11.427137 HIP 
14 24 pcw 0.569007 3.611914 2.728669 7.173590 HIP 
15 37 pcw 0.153815 0.000000 0.622567 0.606804 HIP 
16 4 mos 2.585179 1.980350 3.781297 4.898531 HIP 
17 4 mos 0.760953 0.339324 1.501044 2.491687 HIP 
18 1 yrs 2.003685 7.804700 8.027769 7.122507 HIP 
19 2 yrs 0.000000 0.616036 0.000000 0.050892 HIP 
20 3 yrs 0.302567 0.000000 0.000000 0.402933 HIP 
21 8 yrs 0.765591 2.332778 1.736967 4.598780 HIP 
22 8 yrs 1.157266 3.497623 2.591768 3.543247 HIP 
23 11 yrs 0.337816 0.000000 0.000000 3.256239 HIP 
24 13 yrs 0.082116 0.000000 0.000000 1.421612 HIP 
25 18 yrs 0.243391 0.000000 0.000000 0.601639 HIP 
26 19 yrs 0.716598 1.412251 2.421302 4.201108 HIP 
27 21 yrs 1.742922 4.678306 3.216452 3.701010 HIP 
28 23 yrs 0.158256 0.760269 0.220072 2.115750 HIP 
29 30 yrs 1.303604 0.488246 2.493215 3.816740 HIP 
30 36 yrs 0.367384 2.611151 2.322208 3.423121 HIP 
31 37 yrs 0.643085 3.441538 3.193851 4.546699 HIP 
32 40 yrs 0.145881 0.000000 0.000000 1.622436 HIP 

在R,我想寫的是將計算的均值爲Exon.1所有行的說法,只有該行包含以下年齡:「4 mos」,「1年」,「2年」,「3年」。

我試圖通過一系列試驗參數對Exon.1的值進行子集劃分。

birth.infant <- c("4 mons", "1 yrs", "2 yrs", "3 yrs") 
mean(data.frame$Exon.1 | birth.infant) # error 
mean(data.frame$Exon.1 | if(intersect(data.frame$Age, birth.infant) == TRUE)) 
if(intersect(data.frame$Age, birth.infant)==TRUE) mean(data.frame$Exon.1) 

如果這些插圖是不明確的,我的目標是用birth.infant爲包括某些感興趣的Exon.1值計算平均值。

我該如何爲此任務建立條件平均參數?

回答

0

您嘗試過:mean(Data$Exon.1[which(Data$Age %in% birth.infant)])?這應該可以解決你的問題。

+0

謝謝!那竅門 –

0

正如Jealie說,

mean(Data$Exon.1[Data$Age %in% birth.infant]) 

除了除去其。除了減慢你的代碼之外,它沒有任何用處。

+0

是的,兩種方式都有效。公平地說,兩個參數在system.time()方面沒有區別,但我儘可能地欣賞簡單! –

+0

不會有這麼大的東西。考慮哪些()做 - 它需要由%in%生成的邏輯向量,將其轉化爲索引,然後使用這些索引來對數據進行子集化。由於R允許直接使用邏輯向量進行子集化,因此which()是不必要的操作。 – badmax

+0

我不同意:'哪個'讓你處理不同的情況下你有數據缺失('NA')。特別是,如果一個奇怪的'Data $ Age'碰巧是'NA',那麼你的表達式將返回NA,而我的表達式將返回所有其他現有數據的平均值。*因此, which'。*。我不認爲這種放緩也是顯而易見的:你是否以此爲基準? :) – Jealie