r - сравнить элементы списка из одного информационного кадра со значениями из другого информационного кадра - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь сравнить два набора данных, первый из которых - стандартный фрейм данных, а другой - фрейм данных со столбцом списка.Моя цель - сравнить каждый элемент из списка в столбце списка var34 с двумя переменными в df_i, которые называются var1 и var2.

В случае, когда они равны, я хотел бы, чтобы элемент списка был равен (равен var1 и var2) и переменной flag в конечном наборе данных.

Возможно ли сделать это в R без использования какого-либо типа dplyr::join и без перестановки переменных?

Идеальным решением будет цикл, который проходит строка за строкой через набор данных df_i и проверяет, какой элемент в какой строке в df_list удовлетворяет условию равенства.

Воспроизводимый пример:

# dataframe to be compared
df_i <- data.frame(id = c(1,1,1,2,2,3), var1 = c(1,2,4,6,4,2), var2 = c(2,4,5,2,1,6))

# dataframe with list column to compare to df_i
df_list <- data.frame(
  id = c(1,1,2,2,2,2,2,3,3),
  var34 = I(list(c(4,7),c(1,2),c(1,5),c(1,3),c(4,1),c(1,3),c(6,2),c(3,9),c(2,6)))) %>% 
  group_by(id) %>% summarise(var34 = list(var34)) %>% mutate(flag = c("c", "b", "f"))

# desired output
df_e <- data.frame(
  id = c(1,1,1,2,2,3), 
  var1 = c(1,2,4,6,4,2), 
  var2 = c(2,4,5,2,1,6), 
  flag = c(NA, "c", NA, "b", "b", "f"), 
  var5 = I(list(NA,c(1,2),NA,c(4,1),c(6,2),c(2,6)))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...