Tenho dois conjuntos de dados:
O primeiro data frame ( small
) é relativamente menor que o segundo data frame ( large
). Cada data frame tem uma id
coluna com identificadores exclusivos. O data frame menor tem uma coluna de lista chamada links
, que contém uma lista de links para o segundo data frame maior. O data frame maior tem uma coluna de atributos, que chamaremos de att
:
library(tidyverse)
a <- c(3, 3, NA, 5)
b <- c(NA, 3, 4, 5)
small <- tibble(id = c(1, 2),
links = list(a, b))
large <- tibble(id = c(3, 4, 5),
att = c("yes", "no", "maybe"))
Meu objetivo é contar o número de vezes que cada observação no small
quadro de dados tem links para observações com o "yes"
atributo no large
quadro de dados.
Sinto que algo assim está no caminho certo, mas não está contando corretamente:
counted <- small %>%
mutate(count_yes = map_int(links, ~ sum(large$att[large$id %in% .x] == "yes")))
print(counted)
#> # A tibble: 2 × 3
#> id links count_yes
#> <dbl> <list> <int>
#> 1 1 <dbl [4]> 1
#> 2 2 <dbl [4]> 1
Aqui, count_yes
aparece apenas como 1, quando deveria ser lido como 2 e 1.