多列数据预处理的时候,经常会遇到一种情况,需要把第一列相同的数据合并,比如平均,在与其他的行比较的情况。当然有很多方法,R和matlab都可解决。这里要推荐的是shell下awk的一个用法,便于使用linux而又懒得敲代码的童鞋。
比如,wowo.dat 中有二列,则下面一行代码可以做到对一列进行归类,求第二列的平均:
awk
'{split(a[$1],temp);if(temp[2])$2=($2+temp[2])/2;a[$1]=$0}
END{for(n in a)print a[n]}' wowo.dat
变通一下,不求平均,求和:
awk
'{split(a[$1],temp);if(temp[2])$2=$2+temp[2];a[$1]=$0} END{for(n in
a)print a[n]}' rr.dat
有的时候要同时对第一和第二列归类, 第三列求和:
awk
'{split(a[$1,$2],temp);if(temp[3])$3=($3+temp[3])/2;a[$1,$2]=$0}
END{for(n in a)print a[n]}' wowo.dat
中科院数据处理与统计
https://blog.sciencenet.cn/blog-303373-616142.html
下一篇:
分子可视化软件之我见