首页 > 解决方案 > 在 R - 检查另一个向量中的向量元素并写入出现次数

问题描述

我有以下 dfs 报告第 1 周和第 2 周出现的一些代码

第 1 周:

w1 <- data.frame("Code" = c("B00F328AFW", "B0792HCFTG", "B071SDVC6Z", "B0792H8GHP", "X000MLAQUJ"), "Occs" = c(31, 23, 19, 18, 16))

# Code      # Occs
B00F328AFW      31
B0792HCFTG      23
B071SDVC6Z      19
B0792H8GHP      18
X000MLAQUJ      16

这对于第 2 周:

w2 <- data.frame("Code" = c("X000VID7DV", "X000MLAQUJ", "B000FNFSPY", "X000Z94DWZ", "B01I3DT21I", "X000SC7OO3", "B00F328AFW", "B071SDVC6Z"), "Occs" = c(27, 21, 20, 20, 19, 19, 15, 14))

# Code      # Occs
X000VID7DV      27
X000MLAQUJ      21
B000FNFSPY      20
X000Z94DWZ      20
B01I3DT21I      19
X000SC7OO3      19
B00F328AFW      15
B071SDVC6Z      14

我想了解第一周的代码是否出现在第二周以及出现次数(如果它们与前一个相比或多或少)。

不幸的是,我不知道如何继续,我只是尝试使用 %in% 函数比较 dfs 的第一列,但结果与我的预期相差甚远。

标签: rvectorindexingmatch

解决方案


这是一个 dplyr 解决方案。

library(dplyr)

w1 %>% inner_join(w2, by = "Code") %>% 
mutate(compare = case_when(
                  Occs.y > Occs.x ~ "more",
                   Occs.y < Occs.x ~ "less",
                   Occs.y == Occs.x ~ "same")) %>%
  rename(Occ_week1 = Occs.x, Occ_week2 = Occs.y)

Code           Occ_week1    Occ_week2    compare
1 B00F328AFW        31        15       less
2 B071SDVC6Z        19        14       less
3 X000MLAQUJ        16        21      more

推荐阅读