r - 收集多个列
问题描述
我正在尝试在 R 中收集多个列。一个例子是最近的一些梦幻足球数据:
homeId homePlayerName homePosition homeRosterPts awayId awayPlayerName awayPosition awayRosterPts
5 Nick Chubb RB 23.3 1 Josh Jacobs RB 8.9
4 Tyreek Hill WR 24.6 10 Patrick Mahomes QB 18.5
7 Davante Adams WR 21.0 2 Michael Thomas WR 12.4
我希望 Id、Player Name、Points 和 Positions 列各有一个列,这样我就可以整理数据并将行绑定在一起——而不是在主场和客场重复。我需要在这里使用聚集功能吗?任何解决方案都会有所帮助!
解决方案
对于乐趣/痛苦/教育,您可以reshape
从基础 R 中做到这一点:
reshape(setNames(df, gsub("(home|away)(.*)", "\\2.\\1", names(df))),
direction = "long", varying = 1:ncol(df))
# time Id PlayerName Position RosterPts id
# 1.home home 5 NickChubb RB 23.3 1
# 2.home home 4 TyreekHill WR 24.6 2
# 3.home home 7 DavanteAdams WR 21.0 3
# 1.away away 1 JoshJacobs RB 8.9 1
# 2.away away 10 PatrickMahomes QB 18.5 2
# 3.away away 2 MichaelThomas WR 12.4 3
您也可以melt
像这样使用“data.table”:
library(data.table)
nam <- unique(sub("home|away", "", names(df)))
melt(as.data.table(df), measure = patterns(nam), value.name = nam)
# variable Id PlayerName Position RosterPts
# 1: 1 5 NickChubb RB 23.3
# 2: 1 4 TyreekHill WR 24.6
# 3: 1 7 DavanteAdams WR 21.0
# 4: 2 1 JoshJacobs RB 8.9
# 5: 2 10 PatrickMahomes QB 18.5
# 6: 2 2 MichaelThomas WR 12.4
推荐阅读
- java - Flink oshi-core 异常
- python - 如何从 Keras/Tensorflow 中的 Adam 优化器中获取 Fisher 信息矩阵的估计对角线?
- python - 如何检查 cv2.circle 是否位于 opencv python 中的 cv2.rectangle 内
- kubernetes - 是否可以通过 curl 执行 kubectl 命令?
- php - Symfony 5控制台命令-带参数的构造函数问题
- forms - Delphi:重叠窗口/表单标题栏?
- swift - pod repo 推送:-Swift.h 文件未找到
- c# - .Net Core 3.1 JsonElement 类型的动态对象
- android - 使用动态功能构建 APK 时找不到类
- c++ - 在 *min_element (first_index, last_index); 函数,为什么 last_index 被排除在最小计算中?