+ -
当前位置:首页 → 问答吧 → 怎么样才能对几个名称相近的列求平均值呢?

怎么样才能对几个名称相近的列求平均值呢?

时间:2010-11-09

来源:互联网

本帖最后由 xingzhou823 于 2010-11-09 10:28 编辑

有一个txt文件,矩阵形式:
prob    leaf1   leaf 2  leaf3  seed1  seed2 seed3  seed4 ……
a_de   256    2566   52255  11555 22555 122   2255 ……
a_fe   2554  2135  3254.55  25666  2125  1021  3256……
d_we  2012  20155  5478  21     25545   12202   5500……
s_ge   2012  5251   8945  352100  20123   5568  3021 ……
……
……

第一列不变,然后分别求 leaf  和 seed 的平均值:

prob    leaf   seed  ……
a_de   256    2566  ……
a_fe   2554  2135   ……
d_we  2012  20155  ……
s_ge   2012  5251  ……
……
……

一共有280多列,这个好难啊,不知道有没有高手可以告诉我怎么写

作者: xingzhou823   发布时间: 2010-11-09

perl -F' +' -ane 'print $F[0]," ",($F[1]+$F[2]+$F[3])/3," ",($F[4]+$F[5]+$F[6]+$F[7])/3,"\n" if $. >1 ' file

作者: lkk2003rty   发布时间: 2010-11-09

try first yourself.
见顶楼 提问的智慧

作者: 兰花仙子   发布时间: 2010-11-09

回复 lkk2003rty


    可是一共有280多列呢,那怎么处理呢,而且有的名称是求3列的平均值,有的是15列的平均值……

作者: xingzhou823   发布时间: 2010-11-09

回复 兰花仙子


    恩,知道,可是我没在FAQ里找到,而且,我的确不会。

作者: xingzhou823   发布时间: 2010-11-09

回复 xingzhou823


    楼主搞统计应该用 R 吧,你这需求一行

作者: zhlong8   发布时间: 2010-11-09

回复 zhlong8


    那个,不可以用一个小的perl程序处理一下吗,我接触的太浅了

作者: xingzhou823   发布时间: 2010-11-09

本帖最后由 zhlong8 于 2010-11-09 11:11 编辑

回复 xingzhou823


    楼主刚不是发了个帖子 183M 的 txt? 用perl 很吃内存啊,跑不跑得下来都是问题。用 perl 当然可以,就是循环也没啥太好的办法,可以找找处理矩阵的模块看看。R 有个函数 read.table 直接就把你的数据转成矩阵了,很方便而且至少内存不是问题

作者: zhlong8   发布时间: 2010-11-09