2016-10-31 3 views
2

1つの行(観測)に格納された特定の値の年間合計があるデータセットがあります。私はRのデータを整理して、この合計行を毎月合計12行を12行に分割した単純な方程式(total/12)を使用して分割するようにしたいと思います。私はRでこれをやろうとしていますが、非常に初心者で、どこから始めるべきかは不明です。以下の例は次のとおりです。ここで合計行を個々の行に分割するR

Date | Total 
 
2015 | 12,000 
 

 
Some R function to convert to: 
 

 
    Date | Total 
 
01-01-2015 | 1,000 
 
02-01-2015 | 1,000 
 
03-01-2015 | 1,000

+0

テーブルを適切に入れないと謝罪しました。 – CGermain

+0

MySQLにはタグがあります。データはデータベースから派生していますか? – Parfait

答えて

0

は、私はあなたの希望のユースケースで想定している、複数年の例のデータセットです:

myData <- 
    data.frame(
    Date = 2011:2015 
    , Total = (1:5)*1200 
) 

その後、私はdata.frameを分割しましたDate列(これは年が一意であることを前提としています)で、lapplyでループして、希望の月の値に変更した後、からパイプ(%>%)が機能するためには、dplyrまたはmagrittrもロードする必要があります)。コメントで提案されているように、あなたは毎年数ヶ月の異なる数で割る必要があり、場合

myData %>% 
    split(.$Date) %>% 
    lapply(function(x){ 
    temp <- data.frame(
     Date = as.Date(paste(x$Date 
          , formatC(1:12, width = 2, flag = "0") 
          , "01" 
          , sep = "-")) 
     , Total = x$Total/12 
    ) 
    }) %>% 
    bind_rows() 

は(スキップされた行を示すために...を使用して、注意を)

  Date Total 
1 2011-01-01 100 
2 2011-02-01 100 
3 2011-03-01 100 
... 
16 2012-04-01 200 
17 2012-05-01 200 
18 2012-06-01 200 
... 
29 2013-05-01 300 
30 2013-06-01 300 
31 2013-07-01 300 
... 
43 2014-07-01 400 
44 2014-08-01 400 
45 2014-09-01 400 
... 
58 2015-10-01 500 
59 2015-11-01 500 
60 2015-12-01 500 

を与え、私が作成します長年命名された除数のベクトル。ここでは、n_distinctにはdplyrを使用し、一般的なケースの名前付けを容易にするにはmagrittrパイプを使用しています。その後、別の年のエントリに変更/追加:上記のように代わり12の、そして、

toDivide <- 
    rep(12, n_distinct(myData$Date)) %>% 
    setNames(sort(unique(myData$Date))) 

toDivide["2016"] <- 9 

を、あなたはこのベクトルを使用することができます。これで、lapplyループ内

Total = x$Total/12 

::だから、これを交換

Total = x$Total/toDivide[as.character(x$Date)] 

、それは代わりに、常に同じもので割るのは、その年のエントリで割る必要があります。

+0

Markありがとう!私はこれを試してみて、それがどのように機能するかを伝えます。 – CGermain

+0

マーク。これはうまくいきました。私はグループバイ句を追加しました。私は、合計ディメンション別にグループ化する必要があった合計を持つ複数の行を持っていました。私は追加の質問がありました。私は2015を12で割り、2016を9で割る必要がある2016年を持っています。もしDate = 2016ならば9で割り算するif文をどこに入れますか? – CGermain

+0

それはあなたのために働いてうれしい。必要なものに適した例については、editを参照してください。 –

関連する問題