Неструктурированная таблица для преобразования таблицы в узкий формат? - PullRequest
0 голосов
/ 15 ноября 2018

Мне нужно заставить данные перейти от примера 1 к примеру 2.

# Example 1
data.frame(Player = c("Brad Abbey", "Wins", "Losses", "Neither", "Caleb Aekins", "Wins", "Losses", "Neither"),
                 No = c(1, NA, NA, NA))

#         Player No
# 1   Brad Abbey  1
# 2         Wins NA
# 3       Losses NA
# 4      Neither NA
# 5 Caleb Aekins  1
# 6         Wins NA
# 7       Losses NA
# 8      Neither NA


# Example 2
structure(list(Player = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L), .Label = c("Brad Abbey", "Caleb Aekins"), class = "factor"), 
Result = structure(c(3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L), class = "factor", 
.Label = c("Losses", 
"Neither", "Overall", "Wins"))), class = "data.frame", row.names = c(NA, 
-8L))

#         Player  Result
# 1   Brad Abbey Overall
# 2   Brad Abbey    Wins
# 3   Brad Abbey  Losses
# 4   Brad Abbey Neither
# 5 Caleb Aekins Overall
# 6 Caleb Aekins    Wins
# 7 Caleb Aekins  Losses
# 8 Caleb Aekins Neither

Как я могу переместить слова «выигрыш», «проигрыш» и «ни один» в столбец рядом с ним, копируя имя человека в строки под ним?

1 Ответ

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

Вы можете извлечь имена игроков из столбца Players, используя функцию setdiff. Затем создайте выходную таблицу с повторением каждого имени игрока 4 раза, а также с известным циклом Result исходов c("Overall","Wins", "Losses", "Neither").

Пожалуйста, смотрите код ниже

df <- data.frame(Player = c("Brad Abbey", "Wins", "Losses", "Neither", "Caleb Aekins", "Wins", "Losses", "Neither"),
                 No = c(1, NA, NA, NA))

outcome <- c("Overall","Wins", "Losses", "Neither")
name <- setdiff(unique(df$Player), outcome)
res <- data.frame(Player = unlist(lapply(name, rep, 4)), Result = outcome)
res

Выход:

        Player  Result
1   Brad Abbey Overall
2   Brad Abbey    Wins
3   Brad Abbey  Losses
4   Brad Abbey Neither
5 Caleb Aekins Overall
6 Caleb Aekins    Wins
7 Caleb Aekins  Losses
8 Caleb Aekins Neither
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...