我有一个带结构的data.frame:
> str(MSK)
'data.frame': 14685 obs. of 3 variables:
$ code : Factor w/ 423 levels "100 975","101 479",..: 281 281 281 281 281 281 281 281 281 281 ...
$ period: Date, format: "2010-01-01" "2010-02-01" "2010-03-01" "2010-04-01" ...
$ sales : num 515 195 414 410 551 18 373 74 62 313 ...
我需要将这些数据转换为矩阵或其他带有行的data.frame:“period”和列:“code”。 一些“代码”时间序列已经满了。缺失值必须等于NA。
例如,我有这样的数据:
code data sales
303 1day 200
303 2day 300
303 3day 400
404 2day 250
404 3day 350
606 2day 167
我需要得到:
303 404 606
1day 200 NA NA
2day 300 250 167
3day 400 350 NA
直接做这件事并不困难,但我想知道正确的转换方式。
对不起我的语言,我的母语是俄语,我在学校的学生很差。
感谢您的关注。 =)
答案 0 :(得分:2)
使用dcast
中的reshape2
。
http://cran.r-project.org/web/packages/reshape2/reshape2.pdf
my_df <- data.frame(
period=c("1day","2day","3day","2day"),
code=c(303,303,304,305),
sale=c(100,200,300,400))
library(reshape2)
my_df2 <- dcast(my_df,period~code,value.var="sale")
输出:
> my_df
period code sale
1 1day 303 100
2 2day 303 200
3 3day 304 300
4 2day 305 400
> my_df2
period 303 304 305
1 1day 100 NA NA
2 2day 200 NA 400
3 3day NA 300 NA