参考 https://zhidao.baidu.com/question/2272398535046668548.html
参考 https://blog.csdn.net/weixin_39716877/article/details/112127499
参考 https://www.cnblogs.com/kevingrace/p/8481965.html
有一个数据集是这样的
cat test.txt
Q 1
Q
Q
Q 5
W 2
W 2
W 4
W
E 2
E
E 8
E
.......
我的需求: 把第一列中某个类别的数据的第二列中存在两个及以上连续缺失数据标记为1,否则标记0,并和该类别输出到一行中
- 第一步,把缺失值替换为0
cat test.txt|awk '{if ($2>=1)print$0; else {print$1"\t"0}}' >test.step1
- 第二步,把一个类别的输出到一行
cat test.step1|awk '{a[$1]=a[$1]$2}END{for(i in a){print i,a[i]}}'>test.step2
- 第三步,判断第二列字符串是否存在两个0相连,如果有,则输出第一列数据和1,否则输出第一列数据和0
cat test.step2|awk '{if($2~/00/){print$1"\t"1}else{print$1"\t"0}}' >result
网友评论