【发布时间】:2019-07-16 10:56:03
【问题描述】:
我需要帮助来解决我遇到的这种转换问题。
我有一个很长的数据框,其中包含模拟数据(即 10k 次模拟)以及其他特征。
我想将这个长数据帧转换为宽数据帧但是希望每个模拟在单独的行中。
我尝试了默认的长到宽转换方法,但它们使每个模拟成为一个新功能(但我希望每个模拟在一个新行中)
虚拟数据集:
name1 <- c('frame1','frame1','frame1','frame1','frame1','frame1','frame1','frame1','frmae1','frame1',
'frame2','frame2','frame2','frame2','frame2','frame2','frame2','frame2','frmae2','frame2')
name2 <- c('arch','conf','f.time.c','f.rev.c','sim1.f','sim1.val','sim2.f','¨sim2.val','sim3.f','sim3-val',
'arch','conf','f.time.c','f.rev.c','sim1.f','sim1.val','sim2.f','¨sim2.val','sim3.f','sim3.val')
value <- c('x86','cust','100','20','-a -b -c=10','150','-d -e=1 -f -z -x','40','-r -e -f -r','89',
'x24','default','500','2','-a1 -b34 -c=12','99','-a -e','100','-e -z ','120')
df = data.frame(name1,name2,value)
数据集如下所示:
name1 name2 value
1 frame1 arch x86
2 frame1 conf cust
3 frame1 f.time.c 100
4 frame1 f.rev.c 20
5 frame1 sim1.f -a -b -c=10
6 frame1 sim1.val 150
7 frame1 sim2.f -d -e=1 -f -z -x
8 frame1 sim2.val 40
9 frmae1 sim3.f -r -e -f -r
10 frame1 sim3.val 89
-------------- Simulation for frame 1 end here
11 frame2 arch x24
12 frame2 conf default
13 frame2 f.time.c 500
14 frame2 f.rev.c 2
15 frame2 sim1.f -a1 -b34 -c=12
16 frame2 sim1.val 99
17 frame2 sim2.f -a -e
18 frame2 sim2.val 100
19 frmae2 sim3.f -e -z
20 frame2 sim3.val 120
我想将它转换为这样的数据框:(不同 sim 的重复特征)
frame arch conf f.time.c f.rev.c sim_number sim.f vale
1 frame1 x86 cust 100 20 sim1 -a -b -c=10 150
2 frame1 x86 cust 100 20 sim2 -d -e=1 -f -z -x 40
3 frame1 x86 cust 100 20 sim3 -r -e -f -r 89
4 frame2 x24 default 500 2 sim1 -a1 -b34 -c=12 99
5 frame2 x24 default 500 2 sim2 -a -e 100
6 frame2 x24 default 500 2 sim3 -e -z 120
【问题讨论】:
标签: r dataframe dplyr tidyverse