3

重複の可能性:
データをロングフォーマットからワイドフォーマットに再形成するR

と:

day <- c(1, 1, 2, 2)
prod <- c(1, 2, 1, 2)
cost <- c(20.1, 17.7, 15.2, 23.3)
record <- data.frame(day=day, prod=prod, cost=cost)

record
  day prod cost
1   1    1 20.1
2   1    2 17.7
3   2    1 15.2
4   2    2 23.3

データを次のように再形成するための良い(迅速な)方法は何ですか?

       day_1 day_2
prod_1  20.1  15.2
prod_2  17.7  23.3

ありがとう!

4

3 に答える 3

6

使用することもできますxtabs

xtabs(cost ~ prod + day, data = record)

    day
prod    1    2
   1 20.1 15.2
   2 17.7 23.3
于 2012-08-10T19:15:00.927 に答える
4

使用しない理由tapply-一意の値があるため、合計関数は重要ではありません。

> tapply(record$cost,list(record$prod, record$day), FUN=sum)

     1    2
1 20.1 15.2
2 17.7 23.3
于 2012-08-10T19:13:56.100 に答える
3

パッケージdcastからの構文は最も単純だと思います。reshape2

library(reshape2)
dcast(prod ~ day, data=record, value.var='cost')

  prod    1    2
1    1 20.1 15.2
2    2 17.7 23.3

ただし、この質問は何度も行われているため、すぐに解決される可能性があります。

于 2012-08-10T19:12:11.037 に答える