首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果匹配三个变量,则连接五个表

如果匹配三个变量,则连接五个表
EN

Stack Overflow用户
提问于 2015-11-18 00:56:23
回答 2查看 50关注 0票数 0

成本

代码语言:javascript
复制
            Name  Class     Status   Cost
      Page, Lisa     11  Full Time  54550
      Page, Lisa     10   Contract  26795
  Taylor, Hector      7  Full Time  42540
Dawson, Jonathan     11  Full Time  35680
Dawson, Jonathan      6  Full Time  72830
Dawson, Jonathan      5   Contract  60830
     Pratt, Erik      8  Full Time  83000

主题

代码语言:javascript
复制
            Name  Class     Status  Subjects
      Page, Lisa     11  Full Time     Maths
      Page, Lisa     10   Contract   Science
  Taylor, Hector      7  Full Time   Science
Dawson, Jonathan     11  Full Time   English
Dawson, Jonathan      6  Full Time     Maths
Dawson, Jonathan      5   Contract     Maths
     Pratt, Erik      8 Full-Time   Hinduism

ComputerNo

代码语言:javascript
复制
            Name  Class     Status  ComputerNo
      Page, Lisa     11  Full Time      115005
      Page, Lisa     10   Contract      450005
  Taylor, Hector      7  Full Time      380025
Dawson, Jonathan     11  Full Time      152253
Dawson, Jonathan      6  Full Time      125523
Dawson, Jonathan      5   Contract      485125

LicenseNo

代码语言:javascript
复制
            Name  Class     Status  LicenseNo
      Page, Lisa     11  Full Time   HJ452632
      Page, Lisa     10   Contract   HJ452634
  Taylor, Hector      7  Full Time   HJ352236
Dawson, Jonathan     11  Full Time   HJ456236
Dawson, Jonathan      6  Full Time   HJ456230
Dawson, Jonathan      5   Contract   HJ456232
     Pratt, Erik      8  Full Time   HJ130055

国家/地区

代码语言:javascript
复制
            Name  Class     Status    Country
      Page, Lisa     11 Full-Time   Hong Kong
      Page, Lisa     10   Contract  Hong Kong
  Taylor, Hector      7 Full-Time UK
Dawson, Jonathan     11 Full-Time USA
Dawson, Jonathan      6 Full-Time USA
Dawson, Jonathan      5   Contract        USA
     Pratt, Erik      8 Full-Time Japan

我所期望的结式表就像这个CombinedDataSet

代码语言:javascript
复制
            Name  Class     Status   Cost  Subjects  ComputerNo  LicenseNo    Country
      Page, Lisa     11  Full Time  54550     Maths      115005   HJ452632  Hong Kong
      Page, Lisa     10   Contract  26795   Science      450005   HJ452634  Hong Kong
  Taylor, Hector      7  Full Time  42540   Science      380025   HJ352236         UK
Dawson, Jonathan     11  Full Time  35680   English      152253   HJ456236        USA
Dawson, Jonathan      6  Full Time  72830     Maths      125523   HJ456230        USA
Dawson, Jonathan      5   Contract  60830     Maths      485125   HJ456232        USA
     Pratt, Erik      8  Full Time  83000  Hinduism        -NA-   HJ130055      Japan

如前所述,我有五个数据表,我想通过连接来创建一个数据集。

我想在每个数据表中匹配3个变量(名称、类和状态),然后加入。如果某一特定表格中的标准没有得到满足,那么我希望在最后一张表格中看到这一点。(作为空白单元格或通过"-NA-“注释)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-18 03:53:28

使用基本的R 合并()函数并在by()中列出多个连接列,并指定all=TRUE以保留右表和左表中的记录:

代码语言:javascript
复制
finaldf <- merge(cost, subject, by=c("Name", "Class", "Status"), all=TRUE)
finaldf <- merge(finaldf, computerNo, by=c("Name", "Class", "Status"), all=TRUE)
finaldf <- merge(finaldf, licenseNo, by=c("Name", "Class", "Status"), all=TRUE)
finaldf <- merge(finaldf, country, by=c("Name", "Class", "Status"), all=TRUE)
票数 1
EN

Stack Overflow用户

发布于 2015-11-18 04:00:33

您可以同时使用Reduce完成这一切。

代码语言:javascript
复制
Reduce(function(x, y) merge(x, y, all = TRUE, 
    by = c("Name", "Class", "Status")), list(cost, subject, computerNo, licenseNo, country))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33769964

复制
相关文章

相似问题

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