从数据框中提取数据

时间:2017-12-12 07:26:05

标签: r bash

我对编程很新,我有一个问题。 我有一个包含多行的文件,我想提取具有相同名称的X和Y的行。但我的问题是,对于某些名称,有多个X和Y,我需要至少有1个X和多个Y或者反过来!

我的数据如下:

-   -   -   -   -   An.Pos  -   -   -   Name    -   - - - - 

1   678731  680107  2   8   X   1376    1   677193  685396  RP11-206L10.3   12  NA  NA  .    
1   1572876 1636342 2   4   X   63466   1   1590786 1594063 RP11-345P4.7    9   NA  NA  .    
1   1572876 1636342 2   4   Y   63466   1   1603429 1604850 RP11-345P4.7    9   NA  NA  .    
1   1572876 1636342 2   4   X   63466   1   1631369 1633249 MMP23A  9   NA  NA  .    

我想得到的是:

1   1572876 1636342 2   4   X   63466   1   1590786 1594063 RP11-345P4.7    9   NA  NA  .    
1   1572876 1636342 2   4   Y   63466   1   1603429 1604850 RP11-345P4.7    9   NA  NA  .

但在我的实际数据中,RP11-345P4.7可能有两行以上。 所以我需要的是至少有1个X和1个Y的名字。

PS。我也不知道用R或Bash或其他语言来做它是否更容易。

1 个答案:

答案 0 :(得分:0)

您可以做的是,首先按Name列进行分组,然后过滤An.Pos列中包含至少一个X和一个Y的所有行。

如果您使用dplyr(并假设您的数据框保存在df中),它将如下所示:

dplyr::group_by(df, Name) %>%
 dplyr::filter(2==n_distinct(An.Pos)) %>%
 dplyr::ungroup()