Nếu dữ liệu là trong dat
(và mức thiết lập lịch theo thứ tự), sau đó một giải pháp cơ sở R là sử dụng (vô cùng unintuitive) reshape()
chức năng:
reshape(dat, v.names = "Demand", idvar = "Store", timevar = "Month",
direction = "wide")
mà cho đoạn dữ liệu cho :
> reshape(dat, v.names = "Demand", idvar = "Store", timevar = "Month",
+ direction = "wide")
Store Demand.Jan Demand.Feb Demand.Mar
1 A 100 150 120
4 B 200 230 320
tên có thể dễ dàng được làm sạch nếu bạn muốn:
> out <- reshape(dat, v.names = "Demand", idvar = "Store", timevar = "Month",
+ direction = "wide")
> names(out)[-1] <- month.abb[1:3]
> out
Store Jan Feb Mar
1 A 100 150 120
4 B 200 230 320
(Để có được kết quả trên, tôi đọc dữ liệu ở trong một thời trang tương tự như những gì thể hiện trong @ trả lời DWin, và sau đó chạy như sau:
dat <- transform(dat, Month = factor(Month, levels = month.abb[1:3]))
nơi dat
là những gì tôi gọi là dữ liệu)
Nguồn
2011-06-24 20:32:52
Điều gì đó không hoàn toàn đúng với kết quả được in trong câu trả lời của bạn. Tháng Giêng A phải là 100 không 150 ví dụ. Mã của bạn hoạt động vì vậy tôi nghi ngờ bạn đã sao chép đầu ra từ trước khi bạn thay đổi các cấp. –
Bạn đúng về lỗi nhưng vì tôi đã thay đổi không đúng mức. Xem ở trên. –