有时候懒得打开R重复read然后table的过程,可以使用如下方法,先看文件格式:
cat file A 235 B 698 C 1425 A 980 C 800 B 120 A 1000 C 1578 B 1899 C 2000
##table之一维统计 要求统计file中第一列的分布
cat file|awk '{CMD[$1]++;count++;}END { for (a in CMD)print CMD[a] " " CMD [a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl 1 4 40% C 2 3 30% B 3 3 30% A
##table之二维统计 要求给出二维的列联表,value每500为一个阶梯,大于1500的算在一起:
cat file|awk'BEGIN{print "name 0-499 500-999 1000-1499 >=1500"}{a[];i=int(/500);if(i<3)b[,i]++;else b[,3]++}END{for(j in a){printf j" ";for(k=0;k<=3;k++)printf b[j,k]+0" ";print ""}}' file | column –t name 0-499 500-999 1000-1499 >=1500 A 1 1 1 0 B 1 1 0 1 C 0 1 1 2