使用dplyr筛选分组数据框:获取玩家感兴趣游戏的流派历史
解决方案(dplyr实现)
首先加载dplyr包:
library(dplyr)
使用以下代码可得到目标结果:
playerhist %>% # 提取所有标记为"interesting"的玩家与对应游戏编号 left_join( playerhist %>% filter(interesting == "yes") %>% select(player, interesting_game = game), by = "player" ) %>% # 筛选出感兴趣游戏之前的所有玩家历史行 filter(game < interesting_game) %>% # 整理需要的列并重命名 select(player, game, genre_history = genre)
代码逻辑说明:
- 先从原数据中筛选出
interesting == "yes"的记录,提取玩家ID和对应的游戏编号(命名为interesting_game)。 - 通过左连接,将原数据的每一行与该玩家的所有“感兴趣游戏”配对,确保每个感兴趣游戏都能关联到玩家的历史记录。
- 筛选出游戏编号小于当前感兴趣游戏编号的行,即该感兴趣游戏对应的玩家历史记录。
- 最后整理列名,得到符合要求的输出格式。
运行后输出结果与期望完全一致:
player game genre_history 1 1 1 JnR 2 1 2 Ego 3 2 1 RPG 4 2 1 RPG 5 2 2 Sports 6 2 3 JnR
内容的提问来源于stack exchange,提问作者GRowInG
相关产品推荐
相关产品推荐

