Tenho um conjunto de dados que contém listas de valores em duas colunas e quero poder comparar as listas entre si, para cada linha. Por exemplo, tenho 3 grupos, nos quais se espera certos números e se observam outros números. Quero comparar a coluna Observado com a coluna Esperado para ver quais números eram esperados, mas não observados.
Grupo | Esperado | Observado |
---|---|---|
A | 4:8 | c(4, 5, 7) |
B | 7:12 | c(7, 8, 9, 10, 12) |
C | 6:10 | c(6, 8, 10) |
Quero uma coluna extra chamada Missing, que contenha todos os valores que estão em Expected, mas não em Observed.
Grupo | Esperado | Observado | Ausente |
---|---|---|---|
A | 4:8 | c(4, 5, 7) | c(6, 8) |
B | 7:12 | c(7, 8, 9, 10, 12) | 11 |
C | 6:11 | c(6, 8, 11) | c(7, 9, 10) |
Tentei usar setdiff() e base R, pois ele pode encontrar valores diferentes entre duas listas. No entanto, não consigo fazê-lo funcionar da maneira que compara as listas por linha.
df$Missing <- setdiff(df$Expected, df$Observed)
df$Missing <- df$Expected[!(df$Expected %in% df$Observed)]
Ambas as opções resultam na lista completa de Esperados. Esta é a saída que recebo:
Grupo | Esperado | Observado | Ausente |
---|---|---|---|
A | 4:8 | c(4, 5, 7) | 4:8 |
B | 7:12 | c(7, 8, 9, 10, 12) | 7:12 |
C | 6:11 | c(6, 8, 11) | 6:11 |
Existe alguma maneira de comparar as duas listas (Observado x Esperado) por grupo, para ver quais valores estão faltando por grupo? Obrigado desde já por qualquer ajuda!