Я пытаюсь найти способ сделать последовательность пасов и показать, сколько раз каждый игрок переходит к другому игроку.
Так, например, если последовательность проходов была такой: от Джордана до Эммы, от Молли до Эмили плохой, это означает, что пасы Джордана и Эммы были успешными, но проходы Молли не были.несколько строк данных, которые я помещаю в R (в наборе данных 2x2):
Passes
1 jordan to karlie karlie turnover unforced
2 jlin to gray bad
3 alia to kiersten to lilly to kiersten bad
4 mandy to karlie bad
5 kelsey to mccarter to jordan to emma emma fouled
6 mandy to karlie bad
7 mandy to kiersten cleared
Я пытаюсь найти способ, который может преобразовать эти строки в таблицу, например:
Players Mandy-G Jlin-G Gray-G Kiersten-G Kelsey-G Karlie-G Jordan-G Lilly-G Mccarter-G Emma-G Alia-G Mandy-B Jlin-B Gray-B Kiersten-B Kelsey-B Karlie-B Jordan-B Lilly-B Mccarter-B Emma-B Alia-B
Mandy 1 2
Jlin 1
Gray
Kiersten 1
Kelsey 1
Karlie
Jordan 1 1
Lilly 1
McCarter 1
Emma
Alia 1
* Я не знаю, как вставить скриншот, поэтому копирование и вставка испортили форматирование, но вы все равно можете понять, как я хочу, чтобы он выглядел.
Если Мэнди перешел кГрей, и это было хорошо, на пересечении Мэнди и Грей-Г должно быть 1.Если Мэнди перешла к Грейу, и это было плохо, на пересечении Мэнди и Грей-Б должна быть цифра 1.
В этой таблице есть только цифры, потому что я сделал это вручную, и это было всего около 10 минутигры.В конечном счете, делая это в течение полных 90 минут и примерно для 25 игр, мне нужно будет создать способ пройти через первую таблицу и отсортировать R и добавить отметку для каждого успешного и неудачного прохода.
dat3 <- strsplit(dat[,1], "to")
numPass <- rep(0, length(dat3))
for (i in 1:length(dat2)) {
temp <- sum(dat2[[i]] == "to")
if ("bad" %in% dat2[[i]]) {
temp <- temp-1
}
numPass[i] <- temp
}
maxPass <- max(numPass)+1
#for (i in 1:length(dat2)){
for (i in 5){
keep<-dat2[[i]]%in%roster[,1]
pls<-dat2[[i]][keep]
#add statemets to remove last name if there is a "bad"
for (j in 1:length(pls)) {
cols<-which(substr(names(seqPass),1,nchar(pls[j]))==pls[j])
seqPass[i,cols[j]]<-j
}
}
seqPass[c(1,5),]
Я пробовал приведенный выше код, чтобы пройти первые пять строк и посчитать количество проходов в каждой последовательности, и он добавляет отметку под именем каждого игрока, если они участвовали в проходе, но если это было плохоони должны быть удалены, что не делает.
Есть ли способ для R автоматически считать, если имя и второе имя в последовательности имеют хороший проход, добавить метку на их пересечении и сделать то же самое, если имя и второе делаютплохой пас, когда слово «плохой» следует за вторым именем?
Любая помощь будет высоко ценится!Спасибо
Пример данных
structure(list(VT = c("jordan to karlie karlie turnover unforced",
"jlin to gray bad", "alia to kiersten to lilly to kiersten bad",
"mandy to karlie bad", "kelsey to mccarter to jordan to emma emma fouled",
"mandy to karlie bad", "mandy to kiersten cleared bad")), row.names = c(NA,
7L), class = "data.frame", na.action = structure(8:19, .Names = c("8",
"9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"
), class = "omit"))