我想找到一种更短的方法来计算 tibble 中的分组向量之间的连续差异(不是 B 中的 A),其中每个差异都在组“x”的向量与所有先前组中的向量的串联之间。
我在 for 循环中找到了使用 anti_join 的解决方案,但我想知道是否有更简洁的方法。
library(magrittr)
library(tidyverse)
tibble(stage = rep(1:4, each = 2),
string = c("a", "b", "a", "c", "b", "d", "f", "e")) %>%
(function(df) {
df_filtered <- df %>%
filter(stage == 1)
for (stage_sub in unique(df$stage)) {
df_filtered %<>%
rbind(
df %>%
filter(stage == stage_sub) %>%
anti_join(., df %>%
filter(stage %in% 1:(stage_sub-1)), by = "string")
)
}
df_filtered
})
换句话说,如果:
组 1:“a”、“b”
组 2:“a”、“c”
组 3:“b”、“d”
当我计算 group3 和 group1:2 之间的累积连续差异时,我应该得到:
组 3:“d”
因为“d”是唯一未包含在所有先前组中的元素。