【发布时间】:2017-07-18 19:04:22
【问题描述】:
我想同时在两列上创建我的数据调节子集。
与此处类似: subsetting data using multiple variables in R
例如:
假设我有一个名为 Gamedat 的数据集:
Games People Hoursplayed
goldeneye Michael 5
goldeneye Thatcher 8
goldeneye Dexter 12
goldeneye Dexter 15
pacman Dexter 2
tetris Clint 5
tetris Dexter 8
goldeneye Thatcher 12
pacman Thatcher 15
goldeneye Clint 2
pacman Michael 5
pacman Michael 8
pacman Clint 12
tetris John 15
tetris Clint 2
ageofempires Clint 5
pacman Dexter 8
ageofempires Thatcher 12
ageofempires John 15
goldeneye Dexter 2
假设我想看一个像 Goldeneye 这样的游戏。我想看看有多少玩家玩其他游戏的时间与他们玩 Goldeneye 的时间相同(这在我的真实数据集中更有用)。
所以我这样做:
Gameofinterest <- Gamedat[ grep("goldeneye", Gamedat[ ,1]), ]`
然后我这样做:
subset(Gamedat, Gamedat[ ,2] %in% Gameofinterest[ ,2] &
Gamedat[ ,3] %in% Gameofinterest[ ,3])
但这给了我:
Games People Hoursplayed
goldeneye Michael 5
goldeneye Thatcher 8
goldeneye Dexter 12
goldeneye Dexter 15
pacman Dexter 2
tetris Clint 5
tetris Dexter 8
goldeneye Thatcher 12
pacman Thatcher 15
goldeneye Clint 2
pacman Michael 5
pacman Michael 8
pacman Clint 12
tetris Clint 2
ageofempires Clint 5
pacman Dexter 8
ageofempires Thatcher 12
goldeneye Dexter 2
当我真正想要的是这样的时候:
Games People Hoursplayed
goldeneye Michael 5
goldeneye Thatcher 8
goldeneye Dexter 12
goldeneye Dexter 15
pacman Dexter 2
goldeneye Thatcher 12
goldeneye Clint 2
pacman Michael 5
tetris Clint 2
ageofempires Thatcher 12
goldeneye Dexter 2
简而言之,我想找到与“People & Hoursplayed”匹配的示例,
而不是“人物”和“上演时间”……有意义吗?
我知道我能做到:
Gamedat$PHpaste <- paste(Gamedat$People, Gamedat$Hoursplayed, sep="")
Gamedat[Gamedat[ ,4] %in% Gameofinterest[ ,4], ]
然后得到:
Games People Hoursplayed PHpaste
goldeneye Michael 5 Michael5
goldeneye Thatcher 8 Thatcher8
goldeneye Dexter 12 Dexter12
goldeneye Dexter 15 Dexter15
pacman Dexter 2 Dexter2
goldeneye Thatcher 12 Thatcher12
goldeneye Clint 2 Clint2
pacman Michael 5 Michael5
tetris Clint 2 Clint2
ageofempires Thatcher 12 Thatcher12
goldeneye Dexter 2 Dexter2
希望有更优雅的东西吗?
【问题讨论】:
-
您想要的结果正确吗?德克斯特玩 pacman 2 小时,但玩 goldeye 29 小时……是因为这 29 小时中有 2 小时是独特记录的一部分吗?
-
最后一行显示 Dexter 已经玩了 2 小时的 Goldeneye,所以它是正确的匹配。
标签: r indexing subset multiple-columns