将 PCR 96 孔板转为单柱格式
Transposing PCR 96 well plate to single column format
PCR 板在类似于 X-Y 坐标系的坐标系上工作。我想将 96 孔 PCR 板从 X-Y 坐标系(行和列格式)转换为单列格式,将 x-y 系统组合在一起(即行 B 和列 12 = B12).
下面提供的第一个数据集,称为 "pcr_plate",是 96 孔 PCR 板的格式。
第二个数据集 "sample_transposed_plate" 是预期结果的示例。
我尝试过使用以下包中的代码转置数据的经典方法:
图书馆(dplyr)
图书馆(整理)
除了变换(data.frame, ... )
但是,我很困惑如何编写从 A 行列 1:12 开始,然后是 B 行列 1:12 等的代码,同时保持各自的样本(又名好)在相邻的列中
两个示例工作数据集:
pcr_plate <- read.table ("https://pastebin.com/raw/bGhzj5dU", header = T, sep = "")
sample_transposed_plate <- read.table ("https://pastebin.com/raw/xyzv9cvH", header=T, sep = "") # example of desired outcome
逻辑上,假设有 96 个孔,我最后应该有 96 行数据(97 行带有 header)。第一列为 "location",第二列为 "sample"
您可以只使用典型的 gather
将宽数据转换为长数据:
library(tidyverse)
pcr_plate <- read.table ("https://pastebin.com/raw/bGhzj5dU", header = T, sep = "")
sample_transposed_plate <- read.table ("https://pastebin.com/raw/xyzv9cvH", header=T, sep = "")
pcr_plate_long = pcr_plate %>%
gather(number, content, -pcr.plate) %>%
mutate(number = str_remove(number, "^X"),
well_ID = paste0(pcr.plate, number)) %>%
select(content, well_ID)
这就是你要找的(下)
- 第一行将数据从宽转换为长
- 第二行从值中删除"X"并将其与盘子(字母)粘贴在一起,
- 第三行选择您的列(并重命名一个)
- 第四行是在
well_ID
中先按字母排列,再按数字排列的方式。
如果这不起作用或者您有任何问题,请告诉我。
pcr_plate <- read.table ("https://pastebin.com/raw/bGhzj5dU", header = T, sep = "")
library(dplyr)
library(tidyr)
gather(pcr_plate, key = "key", value = "sample", -pcr.plate) %>%
mutate(pcr.plate = paste0(pcr.plate, gsub("X", "", key))) %>%
select(well_ID = pcr.plate, sample) %>%
arrange(gsub("\d", "", well_ID, as.numeric(gsub("\D", "", well_ID))))
well_ID sample
1 A1 1-TypA
2 A2 1-TypA
3 A3 2-TypA
4 A4 2-TypA
5 A5 3-TypA
6 A6 3-TypA
7 A7 4-TypA
8 A8 4-TypA
9 A9 H20-TypA
10 A10 H20-TypA
11 A11 PosA-TypA
12 A12 PosB-RP49
13 B1 1-TypB
14 B2 1-TypB
15 B3 2-TypB
16 B4 2-TypB
17 B5 3-TypB
18 B6 3-TypC
19 B7 4-TypB
20 B8 4-TypB
21 B9 H20-TypB
22 B10 H20-TypB
23 B11 PosA-TypA
24 B12 PosB-RP49
25 C1 1-TypC
26 C2 1-TypC
27 C3 2-TypC
28 C4 2-TypC
29 C5 3-TypC
30 C6 3-TypB
31 C7 4-TypC
32 C8 4-TypC
33 C9 H20-TypC
34 C10 H20-TypC
35 C11 PosA-RP49
36 C12 PosB-H20
37 D1 1-RPS5
38 D2 1-RPS5
39 D3 2-RPS5
40 D4 2-RPS5
41 D5 3-RPS5
42 D6 3-RPS5
43 D7 4-RPS5
44 D8 4-RPS5
45 D9 H20-RPS5
46 D10 H20-RPS5
47 D11 PosA-RP49
48 D12 PosB-H20
49 E1 1-RP49
50 E2 1-RP49
51 E3 2-RP49
52 E4 2-RP49
53 E5 3-RP49
54 E6 3-RP49
55 E7 4-RP49
56 E8 4-RP49
57 E9 H20-RP49
58 E10 H20-RP49
59 E11 PosA-H20
60 E12 H20
61 F1 1-F1430A
62 F2 1-F1430A
63 F3 2-F1430A
64 F4 2-F1430A
65 F5 3-F1430A
66 F6 3-F1430A
67 F7 4-F1430A
68 F8 4-F1430A
69 F9 H20-F1430A
70 F10 H20-F1430A
71 F11 PosA-H20
72 F12 H20
73 G1 1-F1409B
74 G2 1-F1409B
75 G3 2-F1409B
76 G4 2-F1409B
77 G5 3-F1409B
78 G6 3-F1409B
79 G7 4-F1409B
80 G8 4-F1409B
81 G9 H20-F1409B
82 G10 H20-F1409B
83 G11 PosB-TypA
84 G12 H20
85 H1 1-H20
86 H2 1-H20
87 H3 2-H20
88 H4 2-H20
89 H5 3-H20
90 H6 3-H20
91 H7 4-H20
92 H8 4-H20
93 H9 H20-H20
94 H10 H20-H20
95 H11 PosB-TypA
96 H12 H20
编辑:
我的评论误报了,它确实按预期工作了。这是获得相同结果的另一种方法。如果您有任何问题,请告诉我!
gather(pcr_plate, key = "key", value = "sample", -pcr.plate) %>%
mutate(key = as.numeric(gsub("X", "", key))) %>%
arrange(pcr.plate, key) %>%
mutate(pcr.plate = paste0(pcr.plate, key)) %>%
select(well_ID = pcr.plate, sample)
PCR 板在类似于 X-Y 坐标系的坐标系上工作。我想将 96 孔 PCR 板从 X-Y 坐标系(行和列格式)转换为单列格式,将 x-y 系统组合在一起(即行 B 和列 12 = B12).
下面提供的第一个数据集,称为 "pcr_plate",是 96 孔 PCR 板的格式。
第二个数据集 "sample_transposed_plate" 是预期结果的示例。
我尝试过使用以下包中的代码转置数据的经典方法:
图书馆(dplyr) 图书馆(整理)
除了变换(data.frame, ... )
但是,我很困惑如何编写从 A 行列 1:12 开始,然后是 B 行列 1:12 等的代码,同时保持各自的样本(又名好)在相邻的列中
两个示例工作数据集:
pcr_plate <- read.table ("https://pastebin.com/raw/bGhzj5dU", header = T, sep = "")
sample_transposed_plate <- read.table ("https://pastebin.com/raw/xyzv9cvH", header=T, sep = "") # example of desired outcome
逻辑上,假设有 96 个孔,我最后应该有 96 行数据(97 行带有 header)。第一列为 "location",第二列为 "sample"
您可以只使用典型的 gather
将宽数据转换为长数据:
library(tidyverse)
pcr_plate <- read.table ("https://pastebin.com/raw/bGhzj5dU", header = T, sep = "")
sample_transposed_plate <- read.table ("https://pastebin.com/raw/xyzv9cvH", header=T, sep = "")
pcr_plate_long = pcr_plate %>%
gather(number, content, -pcr.plate) %>%
mutate(number = str_remove(number, "^X"),
well_ID = paste0(pcr.plate, number)) %>%
select(content, well_ID)
这就是你要找的(下)
- 第一行将数据从宽转换为长
- 第二行从值中删除"X"并将其与盘子(字母)粘贴在一起,
- 第三行选择您的列(并重命名一个)
- 第四行是在
well_ID
中先按字母排列,再按数字排列的方式。
如果这不起作用或者您有任何问题,请告诉我。
pcr_plate <- read.table ("https://pastebin.com/raw/bGhzj5dU", header = T, sep = "")
library(dplyr)
library(tidyr)
gather(pcr_plate, key = "key", value = "sample", -pcr.plate) %>%
mutate(pcr.plate = paste0(pcr.plate, gsub("X", "", key))) %>%
select(well_ID = pcr.plate, sample) %>%
arrange(gsub("\d", "", well_ID, as.numeric(gsub("\D", "", well_ID))))
well_ID sample
1 A1 1-TypA
2 A2 1-TypA
3 A3 2-TypA
4 A4 2-TypA
5 A5 3-TypA
6 A6 3-TypA
7 A7 4-TypA
8 A8 4-TypA
9 A9 H20-TypA
10 A10 H20-TypA
11 A11 PosA-TypA
12 A12 PosB-RP49
13 B1 1-TypB
14 B2 1-TypB
15 B3 2-TypB
16 B4 2-TypB
17 B5 3-TypB
18 B6 3-TypC
19 B7 4-TypB
20 B8 4-TypB
21 B9 H20-TypB
22 B10 H20-TypB
23 B11 PosA-TypA
24 B12 PosB-RP49
25 C1 1-TypC
26 C2 1-TypC
27 C3 2-TypC
28 C4 2-TypC
29 C5 3-TypC
30 C6 3-TypB
31 C7 4-TypC
32 C8 4-TypC
33 C9 H20-TypC
34 C10 H20-TypC
35 C11 PosA-RP49
36 C12 PosB-H20
37 D1 1-RPS5
38 D2 1-RPS5
39 D3 2-RPS5
40 D4 2-RPS5
41 D5 3-RPS5
42 D6 3-RPS5
43 D7 4-RPS5
44 D8 4-RPS5
45 D9 H20-RPS5
46 D10 H20-RPS5
47 D11 PosA-RP49
48 D12 PosB-H20
49 E1 1-RP49
50 E2 1-RP49
51 E3 2-RP49
52 E4 2-RP49
53 E5 3-RP49
54 E6 3-RP49
55 E7 4-RP49
56 E8 4-RP49
57 E9 H20-RP49
58 E10 H20-RP49
59 E11 PosA-H20
60 E12 H20
61 F1 1-F1430A
62 F2 1-F1430A
63 F3 2-F1430A
64 F4 2-F1430A
65 F5 3-F1430A
66 F6 3-F1430A
67 F7 4-F1430A
68 F8 4-F1430A
69 F9 H20-F1430A
70 F10 H20-F1430A
71 F11 PosA-H20
72 F12 H20
73 G1 1-F1409B
74 G2 1-F1409B
75 G3 2-F1409B
76 G4 2-F1409B
77 G5 3-F1409B
78 G6 3-F1409B
79 G7 4-F1409B
80 G8 4-F1409B
81 G9 H20-F1409B
82 G10 H20-F1409B
83 G11 PosB-TypA
84 G12 H20
85 H1 1-H20
86 H2 1-H20
87 H3 2-H20
88 H4 2-H20
89 H5 3-H20
90 H6 3-H20
91 H7 4-H20
92 H8 4-H20
93 H9 H20-H20
94 H10 H20-H20
95 H11 PosB-TypA
96 H12 H20
编辑:
我的评论误报了,它确实按预期工作了。这是获得相同结果的另一种方法。如果您有任何问题,请告诉我!
gather(pcr_plate, key = "key", value = "sample", -pcr.plate) %>%
mutate(key = as.numeric(gsub("X", "", key))) %>%
arrange(pcr.plate, key) %>%
mutate(pcr.plate = paste0(pcr.plate, key)) %>%
select(well_ID = pcr.plate, sample)