Мы можем создать логический индекс и получить sum
, сгруппированный по 'ID'. Не уверен, является ли 'v1' vector
или list
(если это list
, то unlist(v1)
и использовать его с тем же кодом)
library(dplyr)
df1 %>%
group_by(ID) %>%
summarise(Count = sum(Word %in% v1))
# A tibble: 3 x 2
# ID Count
# <int> <int>
#1 1 3
#2 2 1
#3 3 0
или filter
а затем выполните count
df1 %>%
filter(Word %in% v1) %>%
count(ID, .drop = FALSE)
данные
v1 <- c("House", "Tree", "Bird")
df1 <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 3L), Word = c("Tree",
"House", "Tree", "Snail", "Tree", "Car")), class = "data.frame",
row.names = c(NA,
-6L))