在R中-检查另一个向量中的向量元素并写下出现的情况

时间:2019-06-19 17:02:46

标签: r vector indexing match

我有以下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

第二周:

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的第一列,但结果远远超出了我的期望。

1 个答案:

答案 0 :(得分:1)

这是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