Я импортировал свой набор данных из Graphpad Prism:
library(xml2)
library(pzfx)
pzfx_tables("Dataprism.pzfx") #read prism file
datapoids <- read_pzfx("Dataprism.pzfx", "poidsXY") #import wanted sheet
datapoids
time ttt1_1 ttt1_2 ttt1_3 ttt2_1 ttt2_2 ttt2_3 ttt3_1 ttt3_2 ttt3_3
1 1 0 0 0 0 0 0 0 0 0
2 2 15 17 19 45 51 57 90 102 114
3 3 20 22 25 60 66 75 120 132 150
4 4 30 34 36 90 102 108 180 204 216
5 5 40 50 47 120 130 141 240 300 282
6 6 50 50 60 150 150 180 300 300 360
7 7 60 65 70 210 228 245 420 455 490
8 8 70 75 86 245 262 301 490 525 602
9 9 80 90 110 280 315 385 560 630 770
10 10 90 120 130 315 420 455 630 840 910
11 11 130 160 195 455 560 683 910 1120 1365
12 12 160 200 240 560 700 840 1120 1400 1680
13 13 240 300 360 720 900 1080 1440 1800 2160
14 14 320 400 480 960 1200 1440 1920 2400 2880
15 15 450 500 650 1350 1500 1950 2700 3000 3900
> dput(head(datapoids, 10000000))
structure(list(time = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15), ttt1_1 = c(0, 15, 20, 30, 40, 50, 60, 70, 80, 90,
130, 160, 240, 320, 450), ttt1_2 = c(0, 17, 22, 34, 50, 50, 65,
75, 90, 120, 160, 200, 300, 400, 500), ttt1_3 = c(0, 19, 25,
36, 47, 60, 70, 86, 110, 130, 195, 240, 360, 480, 650), ttt2_1 = c(0,
45, 60, 90, 120, 150, 210, 245, 280, 315, 455, 560, 720, 960,
1350), ttt2_2 = c(0, 51, 66, 102, 130, 150, 228, 262, 315, 420,
560, 700, 900, 1200, 1500), ttt2_3 = c(0, 57, 75, 108, 141, 180,
245, 301, 385, 455, 683, 840, 1080, 1440, 1950), ttt3_1 = c(0,
90, 120, 180, 240, 300, 420, 490, 560, 630, 910, 1120, 1440,
1920, 2700), ttt3_2 = c(0, 102, 132, 204, 300, 300, 455, 525,
630, 840, 1120, 1400, 1800, 2400, 3000), ttt3_3 = c(0, 114, 150,
216, 282, 360, 490, 602, 770, 910, 1365, 1680, 2160, 2880, 3900
)), row.names = c(NA, 15L), class = "data.frame")
Где первый столбец представляет каждый момент времени. Другие столбцы представляют различные измерения веса в каждый момент времени в другой группе: group1 (3 человека: ttt1_1, ttt1_2, ttt1_3), group1 (3 человека: ttt2_1, ttt2_2, ttt2_3) и group3 (3 человека: ttt3_1, ttt3_2, ttt3_3).
Но чтобы нарисовать график с помощью ggplot2, мне нужно изменить расположение моего набора данных.
Я вручную отформатировал набор данных так же, как это выглядит:
> print.data.frame(datapoids)
weight group time
1 0 1 1
2 0 1 1
3 0 1 1
4 0 2 1
5 0 2 1
6 0 2 1
7 0 3 1
8 0 3 1
9 0 3 1
10 15 1 2
11 17 1 2
12 19 1 2
13 45 2 2
14 51 2 2
15 57 2 2
16 90 3 2
17 102 3 2
18 114 3 2
19 20 1 3
20 22 1 3
21 25 1 3
22 60 2 3
23 66 2 3
24 75 2 3
25 120 3 3
26 132 3 3
27 150 3 3
28 30 1 4
29 34 1 4
30 36 1 4
31 90 2 4
32 102 2 4
33 108 2 4
34 180 3 4
35 204 3 4
36 216 3 4
37 40 1 5
38 50 1 5
39 47 1 5
40 120 2 5
41 130 2 5
42 141 2 5
43 240 3 5
44 300 3 5
45 282 3 5
46 50 1 6
47 50 1 6
48 60 1 6
49 150 2 6
50 150 2 6
51 180 2 6
52 300 3 6
53 300 3 6
54 360 3 6
55 60 1 7
56 65 1 7
57 70 1 7
58 210 2 7
59 228 2 7
60 245 2 7
61 420 3 7
62 455 3 7
63 490 3 7
64 70 1 8
65 75 1 8
66 86 1 8
67 245 2 8
68 262 2 8
69 301 2 8
70 490 3 8
71 525 3 8
72 602 3 8
73 80 1 9
74 90 1 9
75 110 1 9
76 280 2 9
77 315 2 9
78 385 2 9
79 560 3 9
80 630 3 9
81 770 3 9
82 90 1 10
83 120 1 10
84 130 1 10
85 315 2 10
86 420 2 10
87 455 2 10
88 630 3 10
89 840 3 10
90 910 3 10
91 130 1 11
92 160 1 11
93 195 1 11
94 455 2 11
95 560 2 11
96 683 2 11
97 910 3 11
98 1120 3 11
99 1365 3 11
100 160 1 12
101 200 1 12
102 240 1 12
103 560 2 12
104 700 2 12
105 840 2 12
106 1120 3 12
107 1400 3 12
108 1680 3 12
109 240 1 13
110 300 1 13
111 360 1 13
112 720 2 13
113 900 2 13
114 1080 2 13
115 1440 3 13
116 1800 3 13
117 2160 3 13
118 320 1 14
119 400 1 14
120 480 1 14
121 960 2 14
122 1200 2 14
123 1440 2 14
124 1920 3 14
125 2400 3 14
126 2880 3 14
127 450 1 15
128 500 1 15
129 650 1 15
130 1350 2 15
131 1500 2 15
132 1950 2 15
133 2700 3 15
134 3000 3 15
135 3900 3 15
> dput(head(datapoids, 10000000))
structure(list(weight = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 17,
19, 45, 51, 57, 90, 102, 114, 20, 22, 25, 60, 66, 75, 120, 132,
150, 30, 34, 36, 90, 102, 108, 180, 204, 216, 40, 50, 47, 120,
130, 141, 240, 300, 282, 50, 50, 60, 150, 150, 180, 300, 300,
360, 60, 65, 70, 210, 228, 245, 420, 455, 490, 70, 75, 86, 245,
262, 301, 490, 525, 602, 80, 90, 110, 280, 315, 385, 560, 630,
770, 90, 120, 130, 315, 420, 455, 630, 840, 910, 130, 160, 195,
455, 560, 683, 910, 1120, 1365, 160, 200, 240, 560, 700, 840,
1120, 1400, 1680, 240, 300, 360, 720, 900, 1080, 1440, 1800,
2160, 320, 400, 480, 960, 1200, 1440, 1920, 2400, 2880, 450,
500, 650, 1350, 1500, 1950, 2700, 3000, 3900), group = structure(c(1L,
1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L,
3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L,
3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L,
2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L,
1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L,
1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L,
2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L,
2L, 2L, 2L, 3L, 3L, 3L), .Label = c("1", "2", "3"), class = "factor"),
time = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L,
13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 14L, 14L, 14L,
14L, 14L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 15L, 15L, 15L,
15L, 15L, 15L), .Label = c("1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "11", "12", "13", "14", "15"), class = "factor")), row.names = c(NA,
-135L), class = c("tbl_df", "tbl", "data.frame"))
Но есть ли способ сделать это в R? Спасибо за вашу помощь!