【问题标题】:R merge reodering rowsR合并重新排序行
【发布时间】:2012-05-18 16:52:11
【问题描述】:

我有 2 个数据框正在尝试合并。一个是 ID 号列表和每个 ID 号的完成百分比。第二个是一个更大的数据集,我想将 % 完成变量附加到。

Df1 看起来像这样:

> 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 看起来像:

> 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

当我尝试使用此代码合并 2 时:

> 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  

仅查看第三行显然是错误的。

我需要最终合并的数据帧与第一个数据帧的顺序完全相同,因为它需要绑定到另一个数据帧。

有什么建议吗?

【问题讨论】:

  • 使用:rowIdd3[order(rowIdd3$id), ] 或尝试sort = FALSE 作为合并的参数。
  • @TylerRinker:很好,第一个成功了,非常感谢。你想把它放在一个答案中,这样我就可以选择它了吗?

标签: r merge


【解决方案1】:

试试:

rowIdd3[order(rowIdd3$id), ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多