这是我有一个示例数据框

 mydataf.tickersymbol mydataf.yr_qtr mydataf.act_mean
1                  ABC          20084               BB
2                  ABC          20091               BB
3                  ABC          20092               BB
4                  ABC          20093               BB
5                  DEF          20084               BB
6                  DEF          20091               BB
7                  DEF          20092               BB
8                  DEF          20093               BB
9                  DEF          20094               BB
10                 GEF          20092               BB
11                 GEF          20093               BB
12                 GEF          20094                M


尝试通过为每个行情记录加入yr_qtr并关心丢失的数据值来获得的输出。我可以遍历此循环并为所有检查创建逻辑,但是似乎通过数据框我应该能够使用r数据框功能来做到这一点?

       20084    20091   20092   20093   20094
ABC     AA      BB      BB      BB
DEF     BB      BB      BB      BB      BM
GEF                     BB      BB      M

最佳答案

我只会做:

library(tidyr)
df %>% spread(mydataf.yr_qtr, mydataf.act_mean)


或使用reshape2包:

library(reshape2)
dcast(df, mydataf.tickersymbol ~ mydataf.yr_qtr,
                        value.var = "mydataf.act_mean")


这使:

  mydataf.tickersymbol 20084 20091 20092 20093 20094
1                  ABC    BB    BB    BB    BB  <NA>
2                  DEF    BB    BB    BB    BB    BB
3                  GEF  <NA>  <NA>    BB    BB     M


或者,如果我们需要“ mydataf.tickersymbol”作为行名,请使用acast给出矩阵输出,然后使用as.data.frame转换回data.frame

library(reshape)#reshape2_1.4
as.data.frame(acast(df, mydataf.tickersymbol~mydataf.yr_qtr,
              value.var='mydataf.act_mean', fill=''))
#     20084 20091 20092 20093 20094
# ABC    BB    BB    BB    BB
# DEF    BB    BB    BB    BB    BB
# GEF                BB    BB     M

关于r - 想要在R中的多列上转置数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29947423/

10-11 23:04
查看更多