我对编程很新,我有一个问题。 我有一个包含多行的文件,我想提取具有相同名称的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或其他语言来做它是否更容易。
答案 0 :(得分:0)
您可以做的是,首先按Name
列进行分组,然后过滤An.Pos
列中包含至少一个X和一个Y的所有行。
如果您使用dplyr(并假设您的数据框保存在df
中),它将如下所示:
dplyr::group_by(df, Name) %>%
dplyr::filter(2==n_distinct(An.Pos)) %>%
dplyr::ungroup()