给定CSV文件:

id, fruit, binary
1, apple, 1
2, orange, 0
3, pear, 1
4, apple, 0
5, peach, 0
6, apple, 1

如何计算水果中的每个唯一值,
二进制值的次数=1/出现次数
果列中出现的果实
?
另一种方法是对每个唯一的水果的二进制列的值求和。
例如:
对于果实苹果来说,它的出现频率为3,二进制数为1 2次。所以我会得到2/3。
我怎么能用一个有效的AWK代码来写呢?
我知道我可以这样做,从第二列中获取唯一值:
cut -d , -f2 file.csv | sort | uniq |


awk '{ a[$2]++ } END { for (b in a) { print b } }' file.csv

所以我的非工作代码如下所示:
 cat file.csv | awk '{ a[$2]++ } END { for (b in a) if ($3==1) {sum+=$3} END {print $0 sum}'


awk '{ a[$2]++ } END { for (b in a) { sum +=1 } }' file.csv

在纠正我的语法和合并两个awk代码时需要帮助

最佳答案

这对你有用吗?

 $ cat file.csv
    1, apple, 1
    2, orange, 0
    3, pear, 1
    4, apple, 0
    5, peach, 0
    6, apple, 1

$ cat file.csv|awk -F',' '{ $3 == 1 && fruit[$2]++; tfruit[$2]++ } END { for ( fr in tfruit) { print fr, fruit[fr], tfruit[fr] } }'
 pear 1 1
 apple 2 3
 orange  1
 peach  1

关于linux - AWK计数术语相对于其他列出现的次数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30991625/

10-14 23:48