删除不等于另一行但不考虑R

时间:2019-05-30 19:20:16

标签: r dataframe

我有这个文件:

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

我想删除除NA之外的父亲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 个答案:

答案 0 :(得分:1)

请您尝试一下:

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

告诉我是否有帮助。