2017-02-28 11 views
0

同時に2つの列にデータコンディショニングのサブセットを作成したいとします。2つの列の組み合わせによるサブセット

ここに似て

:たとえば 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 

は、私はゴールデンアイのようなゲームを見てみたいと言います。そして、私は金魚をプレイしたのと同じ時間に他のプレイヤーがどれくらい頻繁に他のゲームをプレイしたかを見たいと思っています(これは私の実際のデータセットでもっと便利です)。

だから私は、次の操作を行います。

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 
要するに

、私は「人々& Hoursplayed」、ではなく「人」&「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 

は、よりエレガントな何かを期待していましたか?

+0

はあなたの望ましい結果は正しいですか?デクスターはパックマンを2時間プレイしましたが、29時間の金曜日に遊んでいました...その29時間のうち2時間がユニークな記録の一部なのですか? – shayaa

+0

最後の行は、デクスターが金曜日に2時間プレイしたことを示しているので、正しいマッチです。 – StatGenGeek

答えて

0

これはdplyrを使用して達成できると思います。まず、フィルタを使用して、ゲームが金色になっている行を取得します。次に、inner_joinを使用して、PeopleとHoursPlayedを使用して元のデータと結合します。必要に応じて:目的の列を選択し、人物で整理します。

library(dplyr) 
Gamedat %>% 
    filter(Games == "goldeneye") %>% 
    inner_join(Gamedat, by = c("People", "Hoursplayed")) %>% 
    select(Games = Games.y, People, Hoursplayed) %>% 
    arrange(People) 

結果:

  Games People Hoursplayed 
1  goldeneye Clint   2 
2  tetris Clint   2 
3  goldeneye Dexter   12 
4  goldeneye Dexter   15 
5  pacman Dexter   2 
6  goldeneye Dexter   2 
7  goldeneye Michael   5 
8  pacman Michael   5 
9  goldeneye Thatcher   8 
10 goldeneye Thatcher   12 
11 ageofempires Thatcher   12 
+0

美しいありがとう。 – StatGenGeek

関連する問題