我试图比较两个数据集,其中第一个是标准数据帧,另一个是带有列表列的数据帧。我的目标是将列表列var34
中列表中的每个元素与df_i
中名为var1
和var2
的两个变量进行比较。
如果它们相等,我希望列表中的元素相等(等于var1
和var2
)和最终数据集中的flag
变量。 / p>
是否可以在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)))))