Я хочу установить подкадр данных, который имеет столбец идентификатора (v1
, все уникально) и столбец «связанного» идентификатора (v2
).Ожидается, что v2
состоит в том, что он может содержать NA
с, но там, где он есть, соответствующий элемент v1
не появляется в другом месте в v2
.Кроме того, ожидается, что отношение между столбцами будет симметричным: там, где есть запись x, в v2
запись v1
этой строки y, отражается в другой строке, где v1
имеет x и v2
имеет y.Последний критерий заключается в том, что отношение не является рефлексивным: т.е.примеры данных для иллюстрации:
set.seed(1)
dfr <- data.frame(v1=letters,v2=rev(letters))
dfr[sample(26,10),2]<-NA
dfr[sample(26,5),2]<-sample(letters,5)
dfr
v1 v2
1 a z
2 b <NA>
3 c x
4 d w
5 e <NA>
6 f u
7 g <NA>
8 h s
9 i i
10 j <NA>
11 k p
12 l <NA>
13 m f
14 n <NA>
15 o l
16 p k
17 q j
18 r e
19 s <NA>
20 t g
21 u <NA>
22 v e
23 w <NA>
24 x q
25 y x
26 z a
Итак, строки 1, 2, 11, 14, 16 и 26 все соответствуют критериям, и я хочу определить остальные.
Я пыталсянекоторые решения, использующие match
, но NA
вызывают проблемы.Вероятно, это также основывается на том факте, что в этом случае v2
основан на rev(v1)
, тогда как более общее решение не может сделать это предположение.