Как вычесть два значения в матрице с учетом определенного кадра данных? - PullRequest
1 голос
/ 17 апреля 2020

Я сейчас пытаюсь создать инструмент, который будет предсказывать результаты команд. По сути, я использую взять две переменные и вычесть их соответствующие значения r. Вот кадр данных, который я рассматриваю.

enter image description here

С каждой командой A: J связано значение "r":

#       [,1]
#[1,] -0.870  8
#[2,] -0.750  7  
#[3,]  2.290  2
#[4,] -0.050  5
#[5,]  0.355  4
#[6,] -0.895  9
#[7,]  3.290  1 
#[8,] -0.510  6 
#[9,]  0.430  3
#[10,] -3.290 10

Я прошу прощения за отсутствие ясности, но «значение r» находится в столбце 1, а значение в столбце 2 соответствует букве команды (то есть A = 1, B = 2, et c.)

Обращаясь к фрейму данных, я пытаюсь сделать следующее: Для первой строки вычтите E из A. Для второй строки вычтите A из F, et c.

Надеюсь, это имеет смысл. В конечном итоге я не уверен, как это сделать наиболее эффективным способом. Спасибо вам за помощь.

1 Ответ

2 голосов
/ 17 апреля 2020

Мы могли бы создать именованный вектор, а затем использовать его для сопоставления значений 'AwayTeam', 'HomeTeam' и выполнить вычитание

nm1 <- setNames(m1[,1], LETTERS[m1[,2]])
Reduce(`-`, lapply(df1[c('AwayTeam', 'HomeTeam')], function(x) nm1[x]))

Или это просто

nm1[df1[['AwayTeam']]] - nm1[df1[['HomeTeam']]]

данные

m1 <- structure(c(-0.87, -0.75, 2.29, -0.05, 0.3555, -0.895, 3.29, 
-0.51, 0.43, -3.29, 8, 7, 2, 5, 4, 9, 1, 6, 3, 10), .Dim = c(10L, 
2L))

df1 <- structure(list(Week = c(3, 3, 4, 4, 5, 5), AwayTeam = c("E", 
"A", "H", "I", "F", "F"), HomeTeam = c("A", "F", "E", "A", "C", 
"J")), class = "data.frame", row.names = c(NA, -6L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...