如何使用sparklyr将宽数据框列转换为长格式?

问题描述 投票:0回答:1

我有一个数据框,其中包含列id,price1,price2,price3,prob1,prob2,prob3,我想将宽格式和价格,prob列转换为长格式

library(dplyr)
library(data.table)


a <- data.table("id" = c(1,2,4),
                "price1"=c(1.2,2.44,5.6),
                "price2"=c(7.6,8,65),
                "price3"=c(1.2,4.5,7.8),
                "prob1"=c(0.1,0.3,0.5),
                "prob2"=c(0.3,0.35,0.75),
                "prob3"=c(0.18,0.31,0.58))

> a
  id price1 price2 price3 prob1 prob2 prob3
1  1   1.20    7.6    1.2   0.1  0.30  0.18
2  2   2.44    8.0    4.5   0.3  0.35  0.31
3  4   5.60   65.0    7.8   0.5  0.75  0.58

我想将表a转换为

b <- data.table("id"=c(1,1,1,2,2,2,3,3,3),
                "order"=c(1,2,3,1,2,3,1,2,3),
                "price"=c(1.20,7.6,1.2,2.44,8.0,4.5,5.60,65.0,7.8),
                "prob"=c(0.1,0.30,0.18,0.3,0.35,0.31,0.5,0.75,0.58))

> b
   id order price prob
1:  1     1  1.20 0.10
2:  1     2  7.60 0.30
3:  1     3  1.20 0.18
4:  2     1  2.44 0.30
5:  2     2  8.00 0.35
6:  2     3  4.50 0.31
7:  3     1  5.60 0.50
8:  3     2 65.00 0.75
9:  3     3  7.80 0.58

这里的顺序表示价格和概率值的序列号,否则它将被拖曳。我想在sparklyr

中获得此转换
r dplyr sparklyr
1个回答
0
投票

您可以使用pivot_longer指定names_pattern

© www.soinside.com 2019 - 2024. All rights reserved.