Поиск значений в матрице из списка значений в R - PullRequest
0 голосов
/ 11 декабря 2018

Может ли кто-нибудь указать мне правильное направление?У меня есть список результатов (df2 ниже), и я хочу использовать их, чтобы найти значения из матрицы (df ниже).

 df <- read.table(text="Date  Team1   Team2  Team3  Team4  Team5  Team6
             25-Sep-18   17  9   11  14  19  9
             24-Sep-18   18  3   2   19  16  5
             21-Sep-18   15  11  4   11  9   5
             20-Sep-18   1   12  13  18  11  2
             19-Sep-18   10  5   6   16  16  13
             18-Sep-18   1   13  1   18  5   2
             17-Sep-18   16  3   1   13  18  11
             14-Sep-18   6   9   18  17  17  1
             13-Sep-18   8   4   19  17  4   10
             12-Sep-18   6   13  14  6   12  14
             11-Sep-18   15  7   9   12  4   3
             10-Sep-18   3   11  11  2   5   19
             7-Sep-18    1   17  13  9   18  1", header=TRUE)

df2 <- read.table(text="24-Sep-18  Team1
              14-Sep-18  Team2
              10-Sep-18  Team3
              21-Sep-18  Team4
              20-Sep-18  Team5
              7-Sep-18  Team6", header=FALSE)

Вместо того, чтобы использовать какой-то цикл для циклического перебора df2 и назначениякоординаты поиска df, есть ли лучший способ найти результаты из df, используя входные данные из df2?

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

Я пытаюсь создать следующее:

results <- read.table(text="24-Sep-18  Team1 18
                       14-Sep-18  Team2 9
                       10-Sep-18  Team3 11
                       21-Sep-18  Team4 19
                       20-Sep-18  Team5 11
                       7-Sep-18  Team6 1", header=FALSE)

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Нам нужно gather Объединить столбцы команды из df и превратить их в строки, тогда мы сможем объединиться с помощью df2.

library(tidyverse)

df %>% 
  gather(contains("Team"), key = Team, value = Value) %>% 
  inner_join(df2, by = c("Date" = "V1", "Team" = "V2"))

      Date  Team  Value
1 24-Sep-18 Team1    18
2 14-Sep-18 Team2     9
3 10-Sep-18 Team3    11
4 21-Sep-18 Team4    11
5 20-Sep-18 Team5    11
6  7-Sep-18 Team6     1
0 голосов
/ 11 декабря 2018

Это также должно быть полезно.Расплавьте внутреннее соединение двух таблиц и отфильтруйте, где совпадает вторая переменная.

test <- df2 %>% inner_join(df,by=c("V1"="Date"))
results <- reshape2::melt(test) %>% filter(V2 == variable)
0 голосов
/ 11 декабря 2018

Вот base R путь

mat <- cbind(match(df2$V1, df$Date), match(df2$V2, names(df)))
df2$results <- df1[mat]
df2
#         V1    V2 results
#1 24-Sep-18 Team1      18
#2 14-Sep-18 Team2       9
#3 10-Sep-18 Team3      11
#4 21-Sep-18 Team4      11 # your expected seems to be wrong here
#5 20-Sep-18 Team5      11
#6  7-Sep-18 Team6       1

Идея состоит в том, чтобы подмножество df использовать матрицу с одним столбцом для каждого измерения - первый столбец относится к индексу строки, второй к номеру столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...