我需要知道如何从一个数据帧的行中取平均值/中值等,这些数据帧是根据它们是否满足引用另一个的条件而选择的。很难解释,所以我只举一个例子。
> d
Position Value
1 0 0.20
2 5 0.30
3 10 0.45
4 15 0.23
5 20 0.71
6 25 0.10
7 30 0.20
8 35 0.22
9 40 0.80
10 45 0.50
11 50 0.31
12 55 0.40
还有:
Segment Start End
1 1 0 15
2 2 20 40
3 3 45 55
基本上,“d”在某个“位置”给出变量的值。 “d2”给出来自“d”的数据的几个“段”的起点和终点(或位置)。现在,我想要的是每个“段”中“d”的“值”条目的均值和中位数。因此对于段1,因为它分别具有开始和结束位置0和15,它将从“d”返回0,10和15的条目的平均值。请注意,段不一定具有相同的长度,因此仅取前n个条目,第n个条目,第三个n条目等的均值是不行的。
人们可以将这些片段视为染色体上的片段;并且染色体上的每个点都有一个“值”,它描述了染色体上该点的某些特征,并且我有关于每个点上该值等于的数据,以及每个片段开始和结束的位置的数据(片段都是连续的) ,只是不等长),现在想要计算每个段内所有点的平均值。可以这么说,与我的例子不同,在实际的数据集中,有太多的段来手动计算这些,因此问题。谢谢。
答案 0 :(得分:1)
你可以尝试
mapply(function(s,e) {
mean(d$Value[d$Position>=s & d$Position<=e])}
, d2$Start, d2$End)
那应该给你一个与d2行数相同的向量,这样你就可以在所有值所在的位置。