使用:
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
谢谢!
答案 0 :(得分:6)
我们也可以使用xtabs
xtabs(cost ~ prod + day, data = record)
day
prod 1 2
1 20.1 15.2
2 17.7 23.3
答案 1 :(得分:4)
为什么不使用tapply
- sum函数无关紧要,因为你有唯一的值:
> tapply(record$cost,list(record$prod, record$day), FUN=sum)
1 2
1 20.1 15.2
2 17.7 23.3
答案 2 :(得分: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
然而,这个问题已被多次询问,很可能会很快结束。