【问题标题】:Percentage of similarity between two colulmns两列之间的相似度百分比
【发布时间】:2016-07-10 06:30:09
【问题描述】:

假设我有两列:

A  B
1  1
2  2
3  4
4  4
5  4
6  6

有没有办法计算相似度的百分比,所以在上面的例子中我们发现 A 列和 B 列有 67% 相同。

【问题讨论】:

  • 你需要sum(df1$A %in% df1$B)/nrow(df1)
  • 4/6 = 66.6% 而不是 68% - 除非我错过了什么?
  • 是的,你是对的,我的错误。
  • 您的比较是逐行比较,还是只是值必须出现在任一列中?
  • 应该逐行比较。

标签: r compare col


【解决方案1】:

我们可以取'A'和'B'中元素的intersect,得到它的length并除以'df1'的nrow

paste0(round(100*length(intersect(df1$A, df1$B))/nrow(df1)), "%")
#[1] "67%"

如果比较是在对应元素之间进行,请使用== 而不是intersect,sum 逻辑输出中的TRUE 值,除以行数......

paste0(round(100*with(df1, sum(A==B))/nrow(df1)), "%")
#[1] "67%"

或者直接使用mean

paste0(round(100*with(df1, mean(A==B))), "%")
#[1] "67%"

注意:这是我们通过选择任何方法获得相同结果的示例之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2012-04-07
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    相关资源
    最近更新 更多