选定的列元素作为新列

时间:2015-12-23 14:51:43

标签: r dataframe reshape

我有这个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行。

我该怎么做?

2 个答案:

答案 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")