Удаление строки, которая не равна другой строке, но не считая NA в R - PullRequest
0 голосов
/ 30 мая 2019

У меня есть этот файл:

Name Father1 Father2
Joe    1        1
Jan    2        2
Lion  NA       NA
Faire NA        5
jake  5        NA
Stan  3         4
Paul  1         2

И я хотел бы удалить разных отцов между Отцом 1 и 2, кроме НС, вот так:

 Name Father1 Father2
    Joe    1        1
    Jan    2        2
    Lion  NA       NA
    Faire NA        5
    jake  5        NA

Я пробовал этот код, но не работал.

New.file=my.file[!(my.file$Father1 != my.file$Father2),]

И я получил это:

Name Father1 Father2
Joe    1        1
Jan    2        2
 NA   NA       NA
 NA   NA       NA
 NA   NA       NA

Программа удалила разные строки, но заменила другие на NA.

Что случилось?

1 Ответ

1 голос
/ 30 мая 2019

Можете ли вы попробовать это, пожалуйста:

data_not <-data[!(data$father1 != data$father2),]
data[!(data$Name %in% data_not$Name),]

Это работает, когда я делаю это с этим примером:

data <- data.table(Name = c("joe", "jan", "lion", "faire"), father1 = 
c(1,2,NA,5), father2 = c(1,2,3,4))
output :
    Name father1 father2
1:   joe       1       1
2:   jan       2       2
3:  lion      NA       3
4: faire       5       4

data_not <-data[!(data$father1 != data$father2),]
data[!(data$Name %in% data_not$Name),]

new output : 
   Name father1 father2
1:  joe       1       1
2:  jan       2       2
3: lion      NA       3

Скажите, помогает ли это вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...