xiaoshijun的个人博客分享 http://blog.sciencenet.cn/u/xiaoshijun

博文

推荐一个awk的用法,数据处理必备

已有 4227 次阅读 2012-9-23 22:54 |个人分类:数据处理shell|系统分类:科研笔记| Linux, Shell, awk

多列数据预处理的时候,经常会遇到一种情况,需要把第一列相同的数据合并,比如平均,在与其他的行比较的情况。当然有很多方法,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


下一篇:分子可视化软件之我见
收藏 IP: 193.197.73.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 00:16

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部