假设我有这些数据:
library(dplyr)
df1 <- data.frame(x = c(1, 2, 3, 4), z = c("A", "A", "B", "B"))
df2 <- data.frame(x = c(2, 4, 6, 8), z = c("A", "A", "B", "C"))
我可以轻松检查x
中的每个元素df1
是否存在x
于df2
:
df1 <- df1 %>% mutate(present = x %in% df2$x)
有没有一种简单的方法来做同样的事情(最好在tidyverse
),但只在组内检查?
换句话说,要使中的观测df1
值为present
,TRUE
必须满足两点:1)中的组 ( z
)df2
必须与中的组相同;2)中的df1
的值必须与 中的值相同。x
df2
df1
因此,只有第二个观测值 ( 2
) 会是TRUE
因为 中存在一个观测值,其值为 且 为 。最后一个观测值 会是因为尽管 中df2
有x
一个2
值为z
的A
值x
,FALSE
但df2
这个4
观测值属于 组A
,而不是B
。