我有这个data.frame:
> head(ir_dfSTORED)
ind m
1 2015-12-15 21
2 2015-12-15 42
3 2015-12-15 63
4 2015-12-15 84
5 2015-12-15 105
6 2015-12-15 126
> tail(ir_dfSTORED)
ind m
835 2015-12-21 2415
836 2015-12-21 2436
837 2015-12-21 2457
838 2015-12-21 2478
839 2015-12-21 2499
840 2015-12-21 2520
" ind"列的日期重复120行,我有7个日期。 120 x 7 = 840行。
" m"列每天给我120个数字(21,42,63,84,105,126,...,2520)。每天120个数字的向量。
我想转换每个" m"列,从21到2520,作为新列(120列)。
我的最终data.frame应该有" ind"列作为第一个。然后,第二列应为" 21",第三列" 42",...,第120列应为" 2520"。
在此之后,我想在" ind"列没有重复日期,只有七个日期(七行)。在这里,我知道我可以使用unique
命令。我认为这不是一个大问题。
但我不能做转换" m"列。
所以,我的数据框有121列7行。
我该怎么做?
答案 0 :(得分:4)
Reshape2
将通过函数dcast
实现您的目的。
dcast(df,ind ~ m)
该公式有效地表示跟随m并且将实现每天的结果是单行,其中各列从各自流出。转发给@MaratTalipov进行更正。
答案 1 :(得分:2)
以下是基础R reshape()
的解决方案:
ir_dfSTORED$time <- ave(ir_dfSTORED$m, ir_dfSTORED$ind, FUN=seq_along)
reshape(ir_dfSTORED, dir="wide", idvar="ind")