2012-05-11 2 views
0

두 개의 서로 다른 데이터 세트로 작업 중이며 한쪽에서 다른쪽으로 데이터를 이동하려고합니다. 나는 이것을 다음과 같이 생각하고있다 : 하나는 결과를 포함하고, 정확한 인자 (HTm)와 쌍을 이룬다. 그리고 나는 그것을 다른 프레임 위에 펼치기를 원한다. 여기서 첫 번째 프레임이다하나의 데이터 프레임에서 데이터 세트로 결과 이동

head(five) 
    Week  Game.ID  VTm VPts HTm HPts HDifferential VDifferential 
    1 1 [email protected] OAK 20 NE 30  10   -10 
    2 1 [email protected] ARI 19 NYG 42   23   -23 
    3 1 [email protected] CHI 7 WAS 9    2   -2 
    4 1 [email protected] CIN 27 CLE 13   -14   14 
    5 1 [email protected] DAL 28 SD 24   -4    4 
    6 1 [email protected] DEN 10 MIA 34   24   -24 
    VTm.f HTm.f average 
    1 OAK NE 19.4375 
    2 ARI NYG 19.4375 
    3 CHI WAS 19.4375 
    4 CIN CLE 19.4375 
    5 DAL SD 19.4375 
    6 DEN MIA 19.4375 

    > tail(five) 
     Week    Game.ID VTm VPts HTm HPts HDifferential VDiff 
    262 19 [email protected] WAS 10 SEA 20   10 -10 
    263 19 [email protected] CAR 29 CHI 21   -8  8 
    264 19 [email protected] PIT 21 IND 18   -3  3 
    265 20 [email protected] CAR 14 SEA 34   20 -20 
    266 20 [email protected] PIT 34 DEN 17   -17  17 
    267 21 [email protected] SEA 10 PIT 21   11 -11 
      VTm.f HTm.f average 
     262 WAS SEA  0 
     263 CAR CHI  0 
     264 PIT IND  0 
     265 CAR SEA  0 
     266 PIT DEN  0 
     267 SEA PIT  0 

여기서 다른 (첫 번째 프레임에서 집계 수단)이다.

head(fiveINFO) 
    HTm  HPts  VPts average 
    1 ARI 19.87500 19.00000 19.43750 
    2 ATL 24.75000 19.12500 21.93750 
    3 BAL 19.37500 13.75000 16.56250 
    4 BUF 16.50000 17.37500 16.93750 
    5 CAR 25.12500 23.27273 24.19886 
    6 CHI 18.77778 14.00000 16.38889 

    tail(fiveINFO) 
    VTm HPts VPts average 
27 SEA 21.00 25.000 23.0000 
28 SF 30.75 12.625 21.6875 
29 STL 28.00 22.000 25.0000 
30 TB 15.75 15.375 15.5625 
31 TEN 28.00 14.750 21.3750 
32 WAS 20.60 18.800 19.7000 

참고로이 데이터는 NFL 점수를보고 있습니다. 저는 다섯 프레임의 평균을 프레임 2에서 원하고 첫 번째 프레임에서 해당 팀으로 옮기고 싶습니다. 5 개는 266 행이며, 5INFO는 32 행입니다 .5INFO는 각 HTm을 한 번만 포함하고, 다섯 개는 각 팀이 담당하는 홈 경기의 수에 따라 8-10 번씩 포함합니다. 비슷하게 보였지만 여러 데이터 세트를 사용하여 여러 가지 답을 찾았습니다. 나는 두 가지를 합치고 싶지 않다. 두 번째 프레임의 평균 데이터가 첫 번째 프레임의 적절한 HTm 값에 분산되기를 원합니다.

나는이 일을 위해 어떤 종류의 루프를 사용해야 할 것이라고 상상하지만, 내가하고있는 모든 일은 눈에 띄지 않는다. 도움? 총 HTM 열을 기반 다섯 fiveINFO에서 병합 된 열이 상기 데이터 프레임이

+1

에서 열 HPts, VPTS을 제거 #for 이해하는 데 어려움을 겪고있는 이유 '병합()'정확하게 당신이 원하는 일을하지 않습니다. 당신이 원하는 말은 그 기능이하는 일입니다. – joran

+0

이렇게 뭔가가 당신이 원하는 것이 아닙니다. 나는 당신의 데이터를 다시 만들었습니다 : 다섯 번째 - data.frame (HTm = c ("OAK", "OAK", "ARI", "ARI")), fiveINFO <- data.frame (HTm = c ("OAK ","ARI "), 평균 = 1 : 2) 병합 (5, 5INFO, by ="HTm "), – thelatemail

+0

병합을 사용하여 데이터를 올바른 HTm으로 확산하려고했을 때 "ARI"로 올라 갔고 ARI의 평균은 19.4375였다. 회귀하여 나는 다음과 같이 코드를 잘못 작성했을 것이다. 결국 5 : 5INFO [, c ("HTm", "average")]) –

답변

1

total<-merge(five, fiveINFO, by="HTm")

. 5와 5INFO에서 일치하지 않는 htm의 값은 채워지지 않습니다. 그러나 NA로 채워지기를 원하면 명시 적으로 수행 할 수 있습니다 (병합 함수에서이 옵션을 사용하십시오 : all=TRUE, all.x 또는 all.y = TRUE).

병합 후에 원하지 않는 추가 열을 제거 할 수도 있습니다.

total=subset(total,select= -c(HPts,VPts)) 병합 된 데이터 프레임

+0

도움에 감사드립니다! 빠른 질문 : 해당 코드를 시도 할 때 다음 오류가 발생했습니다. fix.by (by.y, y)의 오류 : 'by'이 (가) 올바른 열을 지정해야합니다. 어떻게 해결할 수 있는지 생각해보십시오. 그들은 분명히 유효한 열입니다 ... –

+0

두 개의 데이터 프레임 - 5와 5INFO에서 열 이름이 "HTm"인지 확인하십시오. R은 대소 문자를 구분합니다. 또는 두 데이터 세트 모두에 공통 열 이름이 없으면 by ... = by = "dataframe 5의 columnname"을 사용하십시오.y = "data-frame fiveINFO의 컬럼 이름") – Subs

+0

다섯 번째 데이터 프레임 인 다섯 번째 열에서 "HTm"과 "VTm"이 서로 다른 두 열입니까? 머리와 꼬리 정보가 두 번째 데이터 프레임의 열 이름과 일치하지 않습니다. 병합 중에 올바른 열 이름을 사용해야합니다. (양쪽 데이터 프레임이 같은 컬럼 이름을 포함한다면'by'을 사용하거나 병합을 위해'by.x'와'by.y'를 사용하십시오) – Subs

관련 문제