2014-12-05 47 views
0

我有數據(E - 3個變量的32個OBS),其包含以下各列劃分不相等的大小的dataframes

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個OBS 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工作。如果您想了解更多信息,請告訴我們這個問題。

回答

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?

相關問題