首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一对多在R中使用ffbase

一对多在R中使用ffbase
EN

Stack Overflow用户
提问于 2017-04-19 23:25:49
回答 1查看 155关注 0票数 1

我想使用ffdf复制以下一对多的连接。做这件事最好的方法是什么?

下面我用data.tables给出了一个我想要得到的东西的例子。我知道对merge.ffdf函数的以下描述:

“此方法类似于基本包中的合并,但只允许内部和左侧外部联接。请注意,连接是基于ffmatch或ffdfmatch完成的:只有y中的第一个元素将添加到x中”。

不过,我想知道是否有办法解决这个问题。

代码语言:javascript
复制
> A <- data.table(col1 = LETTERS[1:3],col2 = c("john",'harry','potter'))
> A
   col1   col2
1:    A   john
2:    B  harry
3:    C potter
> B
   col1 col2
1:    A    1
2:    A    2
3:    A    3
4:    B    4
5:    B    5
6:    B    6
7:    C    7
8:    C    8
9:    C    9
> merge(A,B,by = 'col1',all.x = T)
   col1 col2.x col2.y
1:    A   john      1
2:    A   john      2
3:    A   john      3
4:    B  harry      4
5:    B  harry      5
6:    B  harry      6
7:    C potter      7
8:    C potter      8
9:    C potter      9

现在使用ffdf:

代码语言:javascript
复制
> C <- as.ffdf(as.data.frame(unclass(A)))
> D <- as.ffdf(as.data.frame(unclass(B)))
> merge.ffdf(C,D,by = 'col1', all.x = T)

ffdf (all open) dim=c(3,3), dimorder=c(1,2) row.names=NULL
ffdf virtual mapping
       PhysicalName VirtualVmode PhysicalVmode  AsIs VirtualIsMatrix PhysicalIsMatrix
col1           col1      integer       integer FALSE           FALSE            FALSE
col2.x         col2      integer       integer FALSE           FALSE            FALSE
col2.y       col2.y       double        double FALSE           FALSE            FALSE
       PhysicalElementNo PhysicalFirstCol PhysicalLastCol PhysicalIsOpen
col1                   1                1               1           TRUE
col2.x                 2                1               1           TRUE
col2.y                 3                1               1           TRUE
ffdf data
    col1 col2.x col2.y
1 A      john   1     
2 B      harry  4     
3 C      potter 7     
> 

注意,使用ffdf的结果只包含每个组的第一个元素。剩下的该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-19 23:56:59

merge.ffdf(D,C,by = 'col1',all.x=T)

根据文档,merge.ffdf只允许内部连接(所有匹配的键)或左连接(所有“左”键)。

我认为它将每一行作为一个键来处理,并丢弃重复项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43507704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档