Процент сходства между двумя столбцами

Допустим, у меня есть два столбца:

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

Есть ли способ рассчитать процент сходства, чтобы в приведенном выше примере мы обнаружили, что столбцы A и B совпадают на 67%.


person DAT BOI    schedule 23.03.2016    source источник
comment
Вам нужно sum(df1$A %in% df1$B)/nrow(df1)   -  person akrun    schedule 23.03.2016
comment
4/6 = 66,6%, а не 68% - разве я что-то упускаю?   -  person thelatemail    schedule 23.03.2016
comment
да ты прав моя ошибка.   -  person DAT BOI    schedule 23.03.2016
comment
Вы сравниваете построчно или просто значения должны присутствовать в любом столбце?   -  person thelatemail    schedule 23.03.2016
comment
Сравнение должно быть построчным.   -  person DAT BOI    schedule 23.03.2016


Ответы (1)


Мы могли бы взять 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%"

ПРИМЕЧАНИЕ. Это один из тех примеров, когда мы получаем один и тот же результат, выбирая любой из методов.

person akrun    schedule 23.03.2016