基于R中的列比较两个数据帧

时间:2017-03-11 13:42:23

标签: r

我正试图找到一种方法来编写R

中的以下内容

我有一个数据框,我将根据一组公司的最低增长率对表格进行排序

表1

Company  Growth-Dept1   
   A        5%   
   B        10%  
   C        15%  
   D        20%

表2

Company Growth-Dept2    
   A         2%  
   M         4%  
   D         8%  
   C         2%

我想根据Table1中的公司名称比较Table2,并生成一个只有匹配名称的Table3

输出表3

Company  Growth-Dept2  
  A        2%  
  C        2%  
  D        8%

在这种情况下我需要使用循环吗? 有没有其他方式来编程呢?我在每列中有大约800个条目

2 个答案:

答案 0 :(得分:0)

这看起来怎么样?

t1 <- data.frame(company=c('A','B','C','D'),growth=c(.05,.1,.15,.2))
t2 <- data.frame(company=c('A','M','D','C'),growth=c(.02,.04,.08,.02))
tcombined <- t2[which(t1$company %in% t2$company),]
tcombined <- tcombined[order(tcombined$growth),]
tcombined

给出

  company growth
1       A   0.02
4       C   0.02
3       D   0.08

答案 1 :(得分:0)

使用data.tablescales百分比。

library(data.table)
library(scales)

dt1 <- data.table(Company=c('A','B','C','D'),growth_dep1=percent(c(.05,.1,.15,.2)), key = "Company")
dt2 <- data.table(Company=c('A','M','D','C'),growth_dep2=percent(c(.02,.04,.08,.02)), key = "Company")

dt1[dt2][!is.na(growth_dep1), .(Company, growth_dep2)][order(growth_dep2)]