2012-05-18 2 views
0

병합하려고하는 데이터 프레임이 2 개 있습니다. 하나는 id 번호 목록이고 각 id 번호는 % 완료입니다. 두 번째는 % completion 변수를 attach하고자하는 더 큰 데이터 세트입니다.R 병합 행을 병합합니다.

DF1은 다음과 같습니다 :이 코드를 사용하여 둘을 병합 할 때

> rowIdd2 <- data.frame(adQuery1 = names(sumclick)) 
> rowIdd2$pCTR <- sumclick/sumimpress 
> str(rowIdd2) 
'data.frame': 717927 obs. of 2 variables: 
$ adQuery1: Factor w/ 717927 levels "1000467 | 17284",..: 1 2 3 4 5 6 7 8 9 10 ... 
$ pCTR : num [1:717927(1d)] 0 0 0 0 0 0 0 0 0 0 ... 
    ..- attr(*, "dimnames")=List of 1 
    .. ..$ : chr "1000467 | 17284" "1000467 | 34711" "1000471 | 173750" "1000479 | 1924662" ... 
> head(rowIdd2) 
      adQuery1 pCTR 
1 1000467 | 17284 0 
2 1000467 | 34711 0 
3 1000471 | 173750 0 
4 1000479 | 1924662 0 
5  1000479 | 869 0 
6 1000515 | 12208696 0 

:

> rowIdd <- data.frame(id=seq(1,1000000,1)) 
> rowIdd$adQuery1 <- factor(paste(proj3[1:1000000,"adid"], " | ", proj3[1:1000000,"queryid"], sep="")) 
> head(rowIdd) 
    id adQuery1 
1 1 9027213 | 5 
2 2 9027213 | 5 
3 3 9027213 | 1 
4 4 9027213 | 5 
5 5 9027213 | 5 
6 6 9027213 | 5 
> str(rowIdd) 
'data.frame': 1000000 obs. of 2 variables: 
$ id  : num 1 2 3 4 5 6 7 8 9 10 ... 
$ adQuery1: Factor w/ 717927 levels "1000467 | 17284",..: 704056 704056 703739 704056 704056 704056 704110 704056 704056 704056 ... 

DF2의 모습

> rowIdd3 <- merge(rowIdd, rowIdd2, by="adQuery1", sort=F,all.x=TRUE) 
> nrow(rowIdd3) 
[1] 1000000 
> head(rowIdd3) 
    adQuery1  id  pCTR 
1 9027213 | 5  1 0.04567665 
2 9027213 | 5  2 0.04567665 
3 9027213 | 5 669222 0.04567665 
4 9027213 | 5  4 0.04567665 
5 9027213 | 5  5 0.04567665 
6 9027213 | 5  6 0.04567665 

이 분명 그냥 잘못 3 행을보고.

첫 번째 데이터 프레임과 동일한 순서로 최종 병합 데이터 프레임을 필요로하므로 다른 데이터 프레임에 바인딩해야합니다.

제안 사항?

+3

사용 :'rowIdd3 [순서 (rowIdd3 $ 아이디)]'또는 병합 인수로'종류 = FALSE '를 시도합니다. –

+0

@TylerRinker : 멋지게 잡으세요, 첫 번째 트릭을 했어요. 고마워요. 그걸 내가 선택할 수 있도록 대답으로 던지고 싶습니까? – screechOwl

답변

2

시도 :

rowIdd3[order(rowIdd3$id), ] 
관련 문제