我有这个文件:
chromosome start end name short.name start.gene middle
chr8 7447754 7447754 SPAG11B_1 SPAG11B 7447754 7447754
chr8 7462707 7462707 SPAG11B_2 SPAG11B 7447754 7462707
chr8 7463443 7463443 SPAG11B_3 SPAG11B 7447754 7463443
chr8 7470308 7470308 DEFB104B_1 DEFB104B 7470308 7470308
chr8 7475011 7475011 DEFB104B_2 DEFB104B 7470308 7475011
chr8 7896474 7896474 DEFB4A_2 DEFB4A 7894677 7896474
我使用以下方式加载到R数据帧中:>
> df <- read.table("a", header=T) > df chromosome start end name short.name start.gene middle 1 chr8 7447754 7447754 SPAG11B_1 SPAG11B 7447754 7447754 2 chr8 7462707 7462707 SPAG11B_2 SPAG11B 7447754 7462707 3 chr8 7463443 7463443 SPAG11B_3 SPAG11B 7447754 7463443 4 chr8 7470308 7470308 DEFB104B_1 DEFB104B 7470308 7470308 5 chr8 7475011 7475011 DEFB104B_2 DEFB104B 7470308 7475011 6 chr8 7896474 7896474 DEFB4A_2 DEFB4A 7894677 7896474
我现在需要提取一个包含每个唯一
short.name
的开始和结束位置中间的点的向量。例如,简称SPAG11B
有3个条目,第一个start
在7447754
,最后一个end
在7463443
。因此,对于这个名称,我想获得0.5*(7447754+7463443)
,即7455598
。对于所有其他short.name
值也相同:
7455598 ## SPAG11B: 0.5*(7447754+7463443) 7472660 ## DEFB104B: 0.5*(7470308+7475011) 7896474 ## DEFB4A: 0.5*(7896474+7896474)
上面示例的最终结果将是具有以下值的向量:
7455598, 7472660, 7896474
我该怎么做?
我有这个文件:染色体开始结束名称short.name start.gene中间chr8 7447754 7447754 SPAG11B_1 SPAG11B 7447754 7447754 chr8 7462707 7462707 SPAG11B_2 SPAG11B ...
我们可以通过'short.name'分组,获得'middle'的first
和last
元素,相加并乘以0.5
您可以如下使用软件包data.table
: