R 根据特定列中的值选择行
我有一个类似下面的文件。我想打印最后一列中的值大于90的行。我不确定如何指定正确的列R 根据特定列中的值选择行,r,awk,R,Awk,我有一个类似下面的文件。我想打印最后一列中的值大于90的行。我不确定如何指定正确的列 29974 A1CF NM_138932 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99 29974 A1CF NM_138933 9606 hsa-miR-4711-3p 3 25 32
29974 A1CF NM_138932 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99
29974 A1CF NM_138933 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99
29974 A1CF NM_014576 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99
29974 A1CF NM_001198820 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 69
29974 A1CF NM_001198819 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 89
29974 A1CF NM_001198818 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 90
其中df是数据帧对象的名称。通过awk
$ awk '$NF>90' file
29974 A1CF NM_138932 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99
29974 A1CF NM_138933 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99
29974 A1CF NM_014576 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99
Awk处理输入文件,逐条记录,即逐行记录。
NF
是awk中的一个特殊变量,用于存储最后一列的编号。因此,$NF
包含最后一列的值。因此,$NF>90
将检查最后一列的值是否大于90。如果为真,那么awk将打印相应的行。如果最后一列具有columnname:V15,那么只要它是最后一列,上面的语句就会起作用,因为df[,ncol(df)]定义了数据帧中的最后一列。如果要使用列的名称,有几个选项:打印(df[which(df$V15>90),])打印(df[which(df[,“V15”]>90),])target90),])[1]V1 V2 V3 V4 V5 V7 V8 V9 V10 V11 V12 V13 V14 V15(或0-length row.names)警告消息:In Ops.factor(target[,ncol(target)],90):“>”对于系数没有意义您应该将最后一列设置为数字,这样才能工作。。。这就是错误消息告诉您的。。。。你的最后一列是一个因素。像这样更改目标[,ncol(target)]@jebsel您的,这些都是不必要的。
$ awk '$NF>90' file
29974 A1CF NM_138932 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99
29974 A1CF NM_138933 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99
29974 A1CF NM_014576 9606 hsa-miR-4711-3p 3 25 32 -0.018 -0.095 -0.108 0.003 0.017 -0.448 99