根据特定列中的值选择行

时间:2015-04-02 22:12:34

标签: 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      -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

2 个答案:

答案 0 :(得分:2)

print(df[which(df[,ncol(df)]>90),])

其中df是数据框对象的名称。

答案 1 :(得分:1)

通过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打印相应的行。