gpt4 book ai didi

r - 在不考虑顺序的情况下将一行单元格中的所有元素与另一行单元格中的所有元素进行比较

转载 作者:行者123 更新时间:2023-12-04 20:27:43 25 4
gpt4 key购买 nike

我有一个包含 2 列的工作表 AB如图所示,其中的条目用逗号 (,) 分隔。
我想在 R 中逐个单元格比较这 2 行,使其仅在

  • 当所有条目在两行中都匹配时
  • 比较时不考虑顺序(图中第 5 行)

  • 图像的结果列中给出了示例预期输出。
    我在 R 中使用了 match 命令,但它只为第 2 行返回 1 ( TRUE ) 而不是第 5 行,它具有相同的条目但顺序不同。

    有人可以建议 R 中的任何包或函数来帮助我做到这一点(最好是没有循环的解决方案),因为我想在具有数千行的数据集上使用它。

    enter image description here

    最佳答案

    这应该有助于:

    # example data
    dt = data.frame(A = c("1,ab", "1,x,df"),
    B = c("2,ab", "1,df,x"),
    stringsAsFactors = F)

    # vectorised function to check matches
    ff = function(x,y) as.numeric(identical(sort(unlist(strsplit(x,","))),
    sort(unlist(strsplit(y,",")))))
    ff = Vectorize(ff)

    # apply function
    dt$Result = ff(dt$A, dt$B)

    dt

    # A B Result
    # 1 1,ab 2,ab 0
    # 2 1,x,df 1,df,x 1

    如果逗号后面可能有一些空格,可以使用函数 trimws像这样 sort(trimws(unlist(strsplit(x,","))))在上面的函数中。

    关于r - 在不考虑顺序的情况下将一行单元格中的所有元素与另一行单元格中的所有元素进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56839643/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com