如果元素相同,则创建其他数据

时间:2018-01-26 10:11:31

标签: r

我有两个数据集A和B(如下所示),并希望根据这个条件创建第三个名为C的数据集:如果A和B的元素相同(或匹配)则它应该是C(如果然后,那个元素应该是NA /缺失。

A

2 5 9 3
5 3 2 1
2 1 1 3

2 7 9 3
5 3 6 1
2 2 2 3

预期C应该看起来像

2 NA 9 3
5 3 NA 1
2 NA NA 3

两个数据有相同的尺寸,有什么建议吗?

2 个答案:

答案 0 :(得分:3)

这应适用于数据框和矩阵。

如果AB是数据框:

C <- A
C[C != B] <- NA
C
#   V1 V2 V3 V4
# 1  2 NA  9  3
# 2  5  3 NA  1
# 3  2 NA NA  3

如果AB是矩阵:

A <- as.matrix(A)
B <- as.matrix(B)

C <- A
C[C != B] <- NA
C
#      V1 V2 V3 V4
# [1,]  2 NA  9  3
# [2,]  5  3 NA  1
# [3,]  2 NA NA  3

数据

A <- read.table(text = "2 5 9 3
5 3 2 1
2 1 1 3",
                header = FALSE)

B <- read.table(text = "2 7 9 3
5 3 6 1
                2 2 2 3",
                header = FALSE)

答案 1 :(得分:3)

`is.na<-`(A,!A==B)
  V1 V2 V3 V4
1  2 NA  9  3
2  5  3 NA  1
3  2 NA NA  3