假设我有两列:
A B
1 1
2 2
3 4
4 4
5 4
6 6
Run Code Online (Sandbox Code Playgroud)
有没有办法计算相似度的百分比,以便在上面的例子中我们发现 A 列和 B 列有 67% 相同。
我们可以取intersect'A'和'B'中的元素,得到它length并除以nrow'df1'
paste0(round(100*length(intersect(df1$A, df1$B))/nrow(df1)), "%")
#[1] "67%"
Run Code Online (Sandbox Code Playgroud)
如果比较结果为相应的元件之间,使用==代替intersect,sum从逻辑输出,除以行数的真实值....
paste0(round(100*with(df1, sum(A==B))/nrow(df1)), "%")
#[1] "67%"
Run Code Online (Sandbox Code Playgroud)
或者只是使用 mean
paste0(round(100*with(df1, mean(A==B))), "%")
#[1] "67%"
Run Code Online (Sandbox Code Playgroud)
注意:这是通过选择任何方法获得相同结果的示例之一。