Допустим, у меня есть три колонки, как эти:Группа категориальные значения
c1 c2 c3
red one low
blue two high
red two low
red one low
Я пытаюсь выяснить, эффективный способ создания новых столбцов, которые кодируют записи по сходству. Результатом этого может быть что-то вроде этого:
c1 c2 c3 d1
red one low 1
blue two high
red two low
red one low 1
С помощью этого универсального примера я мог варьировать количество столбцов, включенных, также определить, какие подмножества столбцов одинаковы между записями. Я предполагаю, что это может включать в себя алгоритм кластеризации k-mode, хотя я не понял, как получить такой вывод, как выше, что, конечно, можно легко использовать в качестве регрессоров.
Update
Из предложений до сих пор, команда взаимодействия, безусловно, самый элегантный (одна линия!), А также наиболее экономной, поскольку он кодирует все группы численно в одном столбце. Престижность thelatemail для этого предложения, и спасибо всем остальным за ваши другие подходы.
Позвольте мне сделать это более сложным и на самом деле ближе к тому, что мне нужно. Взяв пример выше, я мог бы также использовать частичное совпадение. Что, если две колонки согласны? Вывод может выглядеть (вроде), как этого
c1 c2 c3 g1 g2
red one low 1 2
blue two high
red two low 2
red one low 1 2
Наряду с весами для групп:
group weight
1 3
2 2
В этом примере группа 1 имеет вес 3, потому что все факторы согласились, в то время как группа 2 имеет вес 2, потому что только 2 из 3 факторов согласились.
Формат возвращаемых групп и весов для групп, очевидно, может выглядеть несколько иначе.
Возможно, есть еще большая сложность, которую мне не хватает, но вы можете просто использовать 'взаимодействие' для обозначения соответствующих записей -' as.числовое (взаимодействие (dat, drop = TRUE)) ' – thelatemail
Не могли бы вы пометить какой-нибудь anwer как правильный, если он решит вашу проблему, пожалуйста? благодаря – StefanK