さまざまな製品を販売する 3 人の営業担当者の売上データがあるとします。難しいのは、各担当者が異なる組み合わせの製品を販売していることであり、必ずしも同じ数であるとは限りません。
ボブは製品 A、B、および C を販売します
マイクは製品 A、B、C、および D を販売しています
サラは製品 A、B、および E を販売します
RepName Product SalesDollarAmt SalesQty
1 Bob A 43 3
2 Mike A 14 5
3 Sara A 53 1
4 Bob B 100 35
5 Mike B 215 80
6 Sara B 310 105
7 Bob C 5 8
8 Mike C 10 3
9 Mike D 105 50
10 Sara E 25 18
結果が次のようになるように、製品でこれを回転させたいと思います。
RepName Product.1 SalesDollarAmt.1 SalesQty.1 Product.2 SalesDollarAmt.2 SalesQty.2 Product.3 SalesDollarAmt.3 SalesQty.3 Product.4 SalesDollarAmt.4 SalesQty.4
1 Bob A 43 3 B 100 35 C 5 8 <NA> 0 0
2 Mike A 14 5 B 215 80 C 10 3 D 105 50
3 Sara A 53 1 B 310 105 E 25 18 <NA> 0 0
それらがすべて同じ製品を持っていた場合、製品ごとに個別のデータフレームにフィルターしてから、RepName でそれらを結合し直していたでしょう。spread
とで考えられるすべてのことを試しましたdcast
。助けてくれてありがとう!
サンプル データ フレームのコード:
library(tidyverse)
# initial sales data
df <- tribble(
~RepName, ~Product, ~SalesDollarAmt, ~SalesQty,
#-------------------------------
"Bob", "A", 43, 3,
"Mike", "A", 14, 5,
"Sara", "A", 53, 1,
"Bob", "B", 100, 35,
"Mike", "B", 215, 80,
"Sara", "B", 310, 105,
"Bob", "C", 5, 8,
"Mike", "C", 10, 3,
"Mike", "D", 105, 50,
"Sara", "E", 25, 18
)
# ideally rotated data
df2 <- tribble(
~RepName, ~Product.1, ~SalesDollarAmt.1, ~SalesQty.1, ~Product.2, ~SalesDollarAmt.2, ~SalesQty.2, ~Product.3, ~SalesDollarAmt.3, ~SalesQty.3, ~Product.4, ~SalesDollarAmt.4, ~SalesQty.4,
#--------------------------------------------------------------
"Bob", "A", 43, 3, "B", 100, 35, "C", 5, 8, NA, 0, 0,
"Mike", "A", 14, 5, "B", 215, 80, "C", 10, 3, "D", 105, 50,
"Sara", "A", 53, 1, "B", 310, 105, "E", 25, 18, NA, 0, 0
)