zoukankan      html  css  js  c++  java
  • linux awk命令实现对数据的每一列进行求和、求平均

    1、测试数据

    root@PC1:/home/test# ls
    test.txt
    root@PC1:/home/test# cat test.txt
    3 4 2 9
    1 3 5 4
    3 7 8 4
    2 3 4 6

    2、对每一列数据进行求和

    root@PC1:/home/test# ls
    test.txt
    root@PC1:/home/test# cat test.txt
    3 4 2 9
    1 3 5 4
    3 7 8 4
    2 3 4 6
    root@PC1:/home/test# for i in `head -n 1 test.txt | awk '{print NF}' | xargs seq`; do awk -v a=$i 'BEGIN{sum = 0} {sum += $a} END{print sum}' test.txt >> sum.txt; done
    root@PC1:/home/test# ls
    sum.txt  test.txt
    root@PC1:/home/test# cat sum.txt  ##求和结果保存为列的形式
    9
    17
    19
    23
    root@PC1:/home/test# paste -d " " -s sum.txt   ## 将列的形式转换为行的形式
    9 17 19 23

    3、对每一列求平均

    root@PC1:/home/test# ls
    test.txt
    root@PC1:/home/test# cat test.txt
    3 4 2 9
    1 3 5 4
    3 7 8 4
    2 3 4 6
    root@PC1:/home/test# for i in `head -n 1 test.txt | awk '{print NF}' | xargs seq `; do awk -v a=$i 'BEGIN{sum = 0} {sum += $a} END {print sum/NR}' test.txt >> mean.txt; done
    root@PC1:/home/test# ls
    mean.txt  test.txt
    root@PC1:/home/test# cat mean.txt
    2.25
    4.25
    4.75
    5.75
    root@PC1:/home/test# paste -d " " -s mean.txt   ## 每一列求平均结果
    2.25 4.25 4.75 5.75

    4、R语言实现

    dir()
    dat <- read.table("test.txt", header = F)
    dat
    apply(dat, 2, sum)
    apply(dat, 2, mean)
    > dir()
    [1] "test.txt"
    > dat <- read.table("test.txt", header = F)  ## 读取测试数据
    > dat
      V1 V2 V3 V4
    1  3  4  2  9
    2  1  3  5  4
    3  3  7  8  4
    4  2  3  4  6
    > apply(dat, 2, sum)     ## 求每一列的和
    V1 V2 V3 V4 
     9 17 19 23 
    > apply(dat, 2, mean)    ## 求每一列的平均数
      V1   V2   V3   V4 
    2.25 4.25 4.75 5.75 
  • 相关阅读:
    设计数据密集型应用(中英双语)
    缓存设计中的热点问题讨论
    Python Twisted
    Python-memcached的使用用法
    四款免费好用的Bootstrap ui编辑器
    8个强大的基于Bootstrap的CSS框架
    盘点国内网站常用的一些 CDN 公共库加速服务
    分布式缓存系统 Memcached 快速入门
    函数缓存 (Function caching)
    Golang新开发者要注意的陷阱和常见错误
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15804970.html
Copyright © 2011-2022 走看看