dataframe - 提取数字超过 N 的特定行
问题描述
我有一个这样的数据框
1 3 MAPQ=0;CT=3to5;SRMAPQ=60
2 34 MAPQ=60;CT=3to5;SRMAPQ=67
4 56 MAPQ=67;CT=3to5;SRMAPQ=50
5 7 MAPQ=44;CT=3to5;SRMAPQ=61
使用 awk (或其他)
我想提取只有 SRMAPQ 超过 60 的行。
这意味着输出是
2 34 MAPQ=60;CT=3to5;SRMAPQ=67
5 7 MAPQ=44;CT=3to5;SRMAPQ=61
更新:“SRMAPQ=60”可以是行中的任意位置,MAPQ=44;CT=3to5;SRMAPQ=61;DT=3to5
解决方案
您不必SRMAPQ
单独提取值并进行比较。如果格式像上面一样固定,只需=
用作字段分隔符并使用访问最后一个字段$NF
awk -F= '$NF > 60' file
或者如果SRMAPQ
可以出现在行中的任何位置(如评论中更新的那样),请使用通用方法
awk 'match($0, /SRMAPQ=([0-9]+)/){ l = length("SRMAPQ="); v = substr($0, RSTART+l, RLENGTH-l) } v > 60' file
推荐阅读
- powershell - 将域添加到 Excel 名称
- angular - Angular Material Datepicker 以编程方式设置最小值
- c - 在 C 中使用数组实现 Deque
- c# - 接口继承设计问题
- database - 3-Way Relation or Relation with Relation in Laravel?
- javascript - 内容编辑器 Web 部件 (CEWP) 中的 JavaScript
- python - 合并的字典列表
- javascript - Discord.js 如何使用用户 ID ping 用户
- django - 如何在所有其他 wagtail 页面上导入 Wagtail 页面
- javascript - 在 ThreeJS 中将物理添加到 OBJ 模型