0

以下のようなデータフレームがあります。

CustID  item    sales
1       a1      40
1       a2      40
1       a3      34
1       a4      42
1       a5      21
1       a6      22
2       a1      33
2       a2      30
2       a3      21
2       a4      11
2       a5      19
2       a6      20

2 つの転置されたデータ セット (CSV である必要があります) を作成して、それぞれに 3 つのグループのアイテムが含まれるようにする必要があります.....

出力:

csv1 (item 1-3)         
CustID  itema1  itema2  itema3
1         40      40     34
2         33      30     21

csv2 (item 4-6)         
CustID  itema4  itema5  itema6
1         42     21      22
2         11     19      20

ここで私を助けてください

4

2 に答える 2

2

ワンライナーのソリューションではありませんが、必要なことは実行します。

split最初にとの組み合わせを使用してdcast、df を作成および転置できます。

> items <- split(df, df$item)
> 
> library(reshape2)
> dcast(do.call(rbind, items[1:3]), CustID~item )
  CustID a1 a2 a3
1      1 40 40 34
2      2 33 30 21

> dcast(do.call(rbind, items[4:6]), CustID~item )
  CustID a4 a5 a6
1      1 42 21 22
2      2 11 19 20

次にwrite.csv、data.frames を作成して csv ファイルに保存できます。

ここにすべてをまとめて示します。

lapply(seq(1, length(items), 3), function(i){
  DF <- dcast(do.call(rbind, items[i:(i+2)]), CustID~item )
  write.csv(DF, file = paste0("DF", i, ".csv"))
})
于 2013-10-03T09:32:56.880 に答える