は、私はあなたの希望のユースケースで想定している、複数年の例のデータセットです:
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)]
、それは代わりに、常に同じもので割るのは、その年のエントリで割る必要があります。
テーブルを適切に入れないと謝罪しました。 – CGermain
MySQLにはタグがあります。データはデータベースから派生していますか? – Parfait