【问题标题】:Non-structured table to narrow format table transformation?非结构化表格到窄格式表格的转换?
【发布时间】:2019-04-18 02:32:57
【问题描述】:

我需要将数据从示例 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.将 Player 列复制到新列 Result。 2.Player == Result,Result = "Overall.
  • 请以纯文本形式提供示例数据(使用例如 dput),而不是图像,以便用户轻松复制/粘贴。
  • 欢迎来到 SO Adrian!请阅读并相应地更新您的问题:stackoverflow.com/questions/5963269/…

标签: r dataframe


【解决方案1】:

您可以使用setdiff 函数从列Players 中提取玩家的姓名。然后创建一个输出表,每个玩家名称重复 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

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    相关资源
    最近更新 更多