使用点差,但每列保留两个变量?

时间:2016-10-25 15:01:53

标签: r tidyr spread

想象一下以下df:

   quar              metier    kweffort trips
   <int>               <chr>       <dbl> <int>
1      1 OTB_DEF_100-119_0_0  12866.9022     6
2      1   OTB_DEF_70-99_0_0  13546.3839    11
3      1   OTB_MCD_70-99_0_0   2052.9117     2
4      1 TBB_DEF_100-119_0_0   4496.7492     1
5      1   TBB_DEF_70-99_0_0 384167.3136    69
6      1    TBB_DEF_G120_0_0   7260.1340     1
7      2 OTB_DEF_100-119_0_0  78069.8550    19
8      2   OTB_DEF_70-99_0_0  14333.0972    12
9      2    OTB_DEF_G120_0_0    859.0463     1
10     2   OTB_MCD_70-99_0_0  22528.3388    19

如何使用spread来获取列中具有quar且kweffort和trip作为值的表?

希望看起来像这样:

metier                 quar 1                      quar 2    quar 3    quar 4
OTB_DEF_100-119_0_0    trip value kweffort value   ...       ...       ...

2 个答案:

答案 0 :(得分:1)

我们可以unite'kweffort'和'跳转'到一个列,然后spread到'宽'格式。

library(tidyr)
df1 %>%
    unite(kweffort_trips, kweffort, trips, sep=", ") %>% 
    spread(quar, kweffort_trips, sep="")

答案 1 :(得分:0)

不是基础R:

library(reshape2)
df$trips.kweffort <- paste('trips', df$trips, 'kweffort', df$kweffort)
dcast(df, metier~quar, value.var = 'trips.kweffort')