В файле Excel у меня есть следующая таблица с заголовками как таковые:
**Date** **Session** **Player** **Pre** **Post** **Distance(m)**
Jan 1 1 Player 1 3 6 1000
Jan 1 1 Player 2 3 7 1500
Jan 1 1 Player 3 4 10 4000
Jan 1 1 Player 4 1 3 600
Jan 2 2 Player 1 2 5 1000
Jan 2 2 Player 2 - - 1750
Jan 2 2 Player 3 5 5 3000
Jan 2 2 Player 4 3 6 1000
Jan 3 3 Player 1 3 5 2500
Jan 3 3 Player 2 3 8 1500
Jan 3 3 Player 3 7 7 2500
Jan 3 3 Player 4 - - -
Что я пытаюсь сделать sh - посмотреть на числа расстояний и сравнить их с числами Pre для следующей сессии. Таким образом, на Сессии 1 для Игрока 1 их расстояние (1000) и их Pre # от 2 января (2) должны быть в одном ряду.
Чтобы сделать это, после сортировки игроков по номеру сессии, я пытаюсь найти способ вставить пустую ячейку -
в столбец расстояния для каждого игрока, который выступает в качестве заполнителя для того, что будет сессия 0. Это существенно сокращает расстояния, чтобы соответствовать Pre # на следующий день.
Так что после выполнения этого для этого набора данных результат будет выглядеть следующим образом:
**Player** **Pre for the following Day** **Distance**
Player 1 3 (S1) - (Session 0 - Does Not Exist) (This value is inserted)
Player 1 2 (S2) 1000(Session 1)
Player 1 3 (S3) 1000(Session 2)
Player 1 - (S4 - Not included in this example) 2500(Session 3)
Player 2 3 (S1) - (S0)
Player 2 - (S2) 1500(S1)
Player 2 3 (S3) 1750(S2)
Player 2 - (S4) 1500(S3)
Player 3 4 (S1) - (S0)
Player 3 5 (S2) 4000(S1)
Player 3 7 (S3) 3000(S2)
Player 3 - (S4) 2500(S3)
Игрок 4 пропустил ради времени / избыточности
В этом примере сеанс 3 является последним сеансом, поэтому Pre для S4 для всех игроков будет просто вставлен как -
по умолчанию.
Таким образом, -
необходимо вставлять каждые 4 строки, чтобы соответствовать каждому расстоянию и правильному игроку, и после последней сессии создайте новую строку для каждого игрока, давая -
для Pre и Post, и правильное расстояние.
В моей попытке сделать это у меня есть следующий код и набор данных: из dput ()
structure(list(Date = structure(c(1577836800, 1577836800, 1577836800,
1577836800, 1577923200, 1577923200, 1577923200, 1577923200, 1578009600,
1578009600, 1578009600, 1578009600), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), Session = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3,
3, 3), Player = c("Player 1", "Player 2", "Player 3", "Player 4",
"Player 1", "Player 2", "Player 3", "Player 4", "Player 1", "Player 2",
"Player 3", "Player 4"), Pre = c("3", "3", "4", "1", "2", "-",
"5", "3", "3", "3", "7", "-"), Post = c("6", "7", "10", "3",
"5", "-", "5", "6", "5", "8", "7", "-"), Distance = c("1000",
"1500", "4000", "600", "1000", "1750", "3000", "1000", "-", "1500",
"2500", "-")), row.names = c(NA, 12L), class = "data.frame")
и мой код:
test1 <- data.frame("2020-01-01",1,"Player 1",3,6, "-")
test2 <- data.frame("2020-01-01",4,"Player 1","-","-","2500")
names(test1) <- c("Date", "Session", "Player", "Pre", "Post", "Distance")
names(test2) <- c("Date", "Session", "Player", "Pre", "Post", "Distance")
new <- rbind(test1, stackEX) #This puts the new row at the top where I want it
#Not sure why this removes dates for other rows though
new <- rbind(new, test2)#This is for Session 4 which does not exist in this example
Но использование этого способа не добавляет ячейку -
в столбец расстояния для уменьшения значений, и вместо этого я знаю только о том, как добавить всю новую строку вместо одной ячейки .