В R - Проверить элементы вектора в другом векторе и записать вхождения - PullRequest
0 голосов
/ 19 июня 2019

У меня есть следующие 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, но результат очень далек от того, что я ожидаю.

1 Ответ

1 голос
/ 20 июня 2019

Вот решение 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
...