Допустим, у меня есть два столбца:
A B
1 1
2 2
3 4
4 4
5 4
6 6
Есть ли способ рассчитать процент сходства, чтобы в приведенном выше примере мы обнаружили, что столбцы A и B совпадают на 67%.
Допустим, у меня есть два столбца:
A B
1 1
2 2
3 4
4 4
5 4
6 6
Есть ли способ рассчитать процент сходства, чтобы в приведенном выше примере мы обнаружили, что столбцы A и B совпадают на 67%.
Мы могли бы взять intersect
элементов в 'A' и 'B', получить его length
и разделить на nrow
из 'df1'
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%"
ПРИМЕЧАНИЕ. Это один из тех примеров, когда мы получаем один и тот же результат, выбирая любой из методов.
sum(df1$A %in% df1$B)/nrow(df1)
- person akrun   schedule 23.03.2016