划分大小不等的数据帧

时间:2014-12-05 13:39:26

标签: r division

我有包含以下列的数据(e-32 obs.of 3个变量)

Month Years Seats    
10    2011  4477    
11    2011  12210    
12    2011  12617    
1     2012  12617    
...and so on, up to    
5     2014  25234

包含

的另一个数据(f-101个隐含的3个变量)
Month Years Seats    
1     2006  27787    
up to    
5     2014  29017    

如果e和f的年份和月份相同,我的目的是将e中的座位数除以f中的座位数。我的有效结果是获得一个显示百分比结果

的表格
Month Years Change in Seats    
10    2011  14.72%    
11    2011  42.28%

我尝试过 -

  • “f”的子集,然后与“e”进行比较以执行除法,但这样做失败
  • 合并(e,f)然后执行除法
  • 运行for循环,但没有帮助

    g<-{
        for(i in 2006:2014)
          {
          for (j in 1:12)
            {
              if(i==e[,2] && i==f[,2] && j==e[,1] && j==f[,1])
                {
                  (e[,3]/f[,3])
                }
              else
                {
                  'NA'
                }
            }
          }
      }
    g
    

对此的任何帮助都将受到高度赞赏。几天前刚开始在R工作。如果您想了解更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我认为合并将是您最好的选择。

df1 <- data.frame(month = 1:12, year = rep(2011,12), seats = round(runif(12,10000,20000)))
df2 <- data.frame(month = 2:10, year = rep(2011,9), seats = round(runif(9,10000,20000)))

df3 <- merge(df1, df2, by=c("month", "year"))

df3$change <- df3$seats.x/df3$seats.y

如果您需要将更改显示为百分比而非小数,请检查How to format a number as percentage in R?