2015-02-03 6 views
0

동일한 길이의 두 data.frames 있습니다. 하나의 data.frame에는 WEEK, Winner, Loser, homeScore, awayScore 변수가 있습니다.일치하는 data.frames in R

'data.frame': 256 obs. of 5 variables: 
$ Week  : int 313 313 313 313 313 313 313 313 313 313 ... 
$ Winner : Factor w/ 32 levels "ARI","ATL","BAL",..: 1 2 4 5 7 10 11 13 17 18 ... 
$ Loser : Factor w/ 32 levels "ARI","ATL","BAL",..: 26 20 6 30 3 14 21 32 19 29 ... 
$ homeScore: Factor w/ 41 levels "","12","13","14",..: 7 25 12 9 12 20 23 6 21 22 ... 
$ awayScore: Factor w/ 32 levels "","0","10","11",..: 10 26 13 7 9 17 7 30 13 30 ... 
> 

다른 주간에는 WEEK, Favorite, Underdog, Spread가 있습니다.

'data.frame': 256 obs. of 4 variables: 
$ Week : int 313 313 313 313 313 313 313 313 313 313 ... 
$ Favorite: chr "SEA" "NO" "STL" "PIT" ... 
$ Underdog: Factor w/ 32 levels "ARI","ATL","BAL",..: 12 2 18 8 15 23 7 4 32 31 ... 
$ Spread : chr "-5" "-3" "-3" "-6" ... 

나는, 즐겨 찾기, 낙오자, homeScore, awayScore, 확산을 주와 data.frame을 가지고이 두 data.frames을 결합해야합니다.

즐겨 찾기가 다른 data.frame의 우승자가 아니기 때문에 나는이 매칭 문제로 고민하고 있습니다. 그래서 매주마다 즐겨 찾기와 우승자 또는 패자를 매치 시켜서 올바른 행. 나는 R에 익숙하지 않아서 그렇게하기가 쉽지만 내 능력을 넘어서야한다. data.frames이

head(df1) 
    Week Winner Loser homeScore awayScore 
    313 ARI SD  18  17 
    313 ATL NO  37  34 
    313 BUF CHI  23  20 
    313 CAR TB  20  14 
    313 CIN BAL  23  16 
    313 DEN IND  31  24 
    313 DET NYG  35  14 
    313 HOU WAS  17   6 
    313 MIA NE  33  20 
    313 MIN STL  34   6 

head(df2) 
    Week Favorite Underdog Spread 
    313  SEA  GB  -5 
    313  NO  ATL  -3 
    313  STL  MIN  -3 
    313  PIT  CLE  -6 
    313  PHI  JAX -10 
    313  NYJ  OAK -6.5 
    313  BAL  CIN  -1 
    313  CHI  BUF  -7 
    313  HOU  WAS  -3 
    313  KC  TEN  -3 
+1

'? merge'를 사용해야합니다. SO에서 더 나은 도움을 얻으려면 문제를 재현 가능하게 만드십시오. –

+0

@docendodiscimus가 말했듯이,'merge'가 효과가 있습니다. 그러나 귀하의 식별자가 무엇인지 귀하의 설명에서 명확하지 않으므로 정확한 솔루션을 제공하기가 어렵습니다. 나는 게임 참가자들을위한 식별자를 놓치고 있다고 생각합니다. 그래서 당신은 고심하고 있습니다. –

+0

재현 가능한 예제를 제공해야합니다. str은 아주 쉽게 재현 될 수 없다. –

답변

0

모습을 heres 어떤 도움

..ok 주셔서 감사합니다 당신은 cbind()이 필요합니다. 첫 번째 데이터 프레임은이고, 두 번째는 B의 경우

, 먼저 각의 일반적인 WEEK를 선택

subset.A <- subset(A, Week == 313) 
subset.B <- subset(B, Week == 313) 

을 그리고 그들을 결합 : 내가 이해하면

resultDF <- cbind(A$Week, B$Favorite, B$Underdog, A$homeScore, A$awayScore, B$Spread) 
+0

이것은 좋은 생각이지만 작동하지 않습니다. Favorite 팀과 Underdog 팀이 Winner 팀과 Loser 팀과 같은 순서가 아니기 때문에 일치가 필요합니다. – usingRguy

+0

먼저 원하는 순서를 계산해야합니다 : right.order <- match (subset.A $ Winner, subset.B $ Favorite) subset.B Onur

0

는 나도 몰라 너는 정확하게,하지만 나는 며칠 전에 같은 질문을 한 적이있다. 가장 좋은 대답은 다음과 같습니다.

merge(DFa, DFb, by.x='columnName_a_2Match', by.y='columnName_b_2Match')