2014-03-14 113 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