私は次のようなマトリックスを持っています:
date 1 2 3 4
201601 2 4 6 1
201602 3 7 7 4
201603 4 8 9 6
201604 6 4 5 7
行はprod_Dateと列ヘッダー(1から4)の経過時間を示します。数字は製品の売上高を示しています。
売上高の合計であるPERYEARを持つデータフレームを生成する必要があります。また、これにAge / max(Age)で与えられる「成熟度」係数を掛けたいと思います。この場合はたとえば1/4です。または2/4。年齢は異なる場合がありますのでご注意ください。最終的な出力は次のようになります。
age cum.sales sales*maturity
1 15 3.75
2 38 19.00
3 65 48.75
4 83 83.00
それを速くする方法についての推奨事項はありますか?前もって感謝します
初期データセットがdata.frame
(matrix
混合クラスを保持できないため、 'date'は 'numeric'クラスになります。数値クラスの場合、以下のソリューションは引き続き機能します)。列名から列として「年齢」でdata.frameを作成しmatrix/data.frame
、mutate
で(「日付」列なしでデータセットの列和の累積和を取得から)「cum.sales」と「salesmaturity」を作成します'cum.sales'に 'age'の割合を掛けmax(age)
ます。
library(dplyr)
d1 <- data.frame(age = as.numeric(colnames(df1)[-1]))
d1 %>%
mutate(cum.sales = cumsum(colSums(df1[-1])),
salesmaturity = cum.sales*age/max(age))
# age cum.sales salesmaturity
#1 1 15 3.75
#2 2 38 19.00
#3 3 65 48.75
#4 4 83 83.00
df1 <- structure(list(date = 201601:201604, `1` = c(2L, 3L, 4L, 6L),
`2` = c(4L, 7L, 8L, 4L), `3` = c(6L, 7L, 9L, 5L), `4` = c(1L,
4L, 6L, 7L)), .Names = c("date", "1", "2", "3", "4"),
class = "data.frame", row.names = c(NA, -4L))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加