У меня есть два набора данных:Р: как подсчитать число значений строки имеет в другом кадре обработки данных (длина варьируется)
один фиктивный набор данных, указывающий на наличие определенных признаков:
id a b c .... x y z
1 1 0 0 .... 1 1 1
2 0 1 1 .... 0 0 0
...
и другой набор данных B является именем функции в различных продуктах, которая имеет следующий формат:
prod1 a g b z
prod2 b d r h t j
...
prod56 f e h
, что я хочу знать, это число признаков, что каждый идентификатор имеет каждый DIVI продукта определяемый количеством общей характеристики продукта. (Обратите внимание, что каждый идентификатор может иметь функции для нескольких продуктов, и количество функций в каждом продукте меняется).
, например, хочу выходную матрицу с каждым идентификатором в ряд, и каждый продукт в колонке и подсчет коэффициента в каждой ячейке:
output:
id prodA prod B .... prod56
1 2/26 1/26 .... ...
2 1/26 1/26 .... ...
...
Я знаю, что можно достичь этого с помощью петель, но я интересно, есть ли более чистый и быстрый способ сделать это, используя пакеты обработки данных, такие как dplyr, но я не очень хорошо знаком с этими пакетами, поэтому я был бы очень признателен за понимание.
данных (что-то вроде следующего, но acutual длина характеристики продукта могут меняться - здесь все они содержат 4 функции, представленные 4 букв):
id = seq(1:10)
data = rbinom(260, 1, 0.5)
dat_mat = matrix(nrow = 10, ncol = 26, data)
colnames(dat_mat) = letters[seq(from = 1, to = 26)]
library("random")
set.seed(1234)
product = randomStrings(n=56, len=4, upperalpha=F,digits = F,
loweralpha=TRUE, unique=TRUE, check=TRUE)
Являются ли эти наборы данных в R (пожалуйста, поделитесь) или в файле? –
Как отметил Отт, не могли бы вы предоставить два набора данных в воспроизводимом формате? Вы можете попробовать форматировать два набора данных как матрицу 0/1 (возможно, редкую) из функций (i) id * и (ii) продуктов * и взять их '? Tcrossprod' –