для данного кадра данных Я хотел бы умножить значения массива на столбец кадра данных. Кадр данных состоит из строк, содержащих название, численное значение и два значения коэффициента:Использовать результат массива как множитель для исходного фрейма данных
name credit gender group
n1 10 m A
n2 20 f B
n3 30 m A
n4 40 m B
n5 50 f C
Этот кадр данных может быть создан с помощью команд:
name <- c('n1','n2','n3','n4','n5')
credit <- c(10,20,30,40,50)
gender <- c('m','f','m','m','f')
group <- c('A','B','A','B','C')
DF <-data.frame(cbind(name,credit,gender,group))
# binds columns together and uses it as a data frame
Кроме того, мы матрица, полученные из кадр данных (в более сложных случаях это будет массив). Эта матрица содержит значение суммы всех контрактов, которые попадают в особую категорию (характеризуется м/ж и A/B/C):
m f
A 40 NA
B 40 20
C NA 50
Цель состоит в том, чтобы умножить значения в DF $ кредита, используя соответствующее значение, присвоенное каждой категории в матрице, например значение 10 первой строки в DF будет умножено на 40 (категория, определяемая m и A).
Результат будет выглядеть так:
name credit gender group result
n1 10 m A 400
n2 20 f B 400
n3 30 m A 1200
n4 40 m B 1600
n5 50 f C 2500
Если возможно, я хотел бы выполнить это с помощью R базового пакета, но я открыт для любых полезных решений, которые работают хорошо.
+1 для поиска матрицы. Но ... Если он использовал 'cbind', прежде чем он использовал data.frame, тогда все было« character », а' data.frame' в своих настройках по умолчанию превратили все это в фактор. Поэтому нужно иметь 'as.numeric (as.character (...)) 'лечение, чтобы получить правильные результаты. –
Спасибо за ваш вклад. Я знаю, что as.numeric (...) должен применяться к кредиту DF $. Например, ваш ответ работает очень хорошо. Я попытаюсь проверить, если для более сложных случаев, в которых производным объектом является массив. – John