将此列表转换为长列表
Converting this list to a long list
我有一个转录因子和蛋白质的列表,它们假定如下所示
[![在此处输入图片描述][1]][1]
我想要两列数据,第一列是转录因子,第二列是每个细胞一个单独的蛋白质,如下所示,正如您所见,第一列中每个转录因子都在重复
有什么帮助吗?
这个有用吗:
library(tidyr)
library(dplyr)
df %>% separate_rows(Proteins, sep = ';')
# A tibble: 15 x 2
TFs Proteins
<chr> <chr>
1 HNF4A HNF4A
2 HNF4A SUB1
3 E2F1 RB1
4 E2F1 E2F1
5 E2F1 E2F1
6 E2F1 TFDP1
7 E2F1 GABPB2
8 E2F1 CCNA2
9 E2F1 RBL1
10 E2F1 E2F1
11 E2F1 RB1
12 E2F1 E2F1
13 E2F1 CEBPE
14 E2F1 E2F1
15 E2F1 TFDP1
使用的数据:
df
TFs Proteins
1 HNF4A HNF4A;SUB1
2 E2F1 RB1;E2F1
3 E2F1 E2F1;TFDP1;GABPB2
4 E2F1 CCNA2;RBL1;E2F1
5 E2F1 RB1;E2F1;CEBPE
6 E2F1 E2F1;TFDP1
library(tidyverse)
df %>% separate_rows(Proteins, sep = ";")
# A tibble: 15 x 2
TFs Proteins
<chr> <chr>
1 HNF4A HNF4A
2 HNF4A SUB1
3 E2F1 RB1
4 E2F1 E2F1
5 E2F1 E2F1
6 E2F1 TFDP1
7 E2F1 GABPB2
8 E2F1 CCNA2
9 E2F1 RBL1
10 E2F1 E2F1
11 E2F1 RB1
12 E2F1 E2F1
13 E2F1 CEBPE
14 E2F1 E2F1
15 E2F1 TFDP1
data.table
library(data.table)
setDT(df)[, list(Proteins = unlist(strsplit(Proteins, split = ";"))), by = TFs]
TFs Proteins
1: HNF4A HNF4A
2: HNF4A SUB1
3: E2F1 RB1
4: E2F1 E2F1
5: E2F1 E2F1
6: E2F1 TFDP1
7: E2F1 GABPB2
8: E2F1 CCNA2
9: E2F1 RBL1
10: E2F1 E2F1
11: E2F1 RB1
12: E2F1 E2F1
13: E2F1 CEBPE
14: E2F1 E2F1
15: E2F1 TFDP1
我有一个转录因子和蛋白质的列表,它们假定如下所示
[![在此处输入图片描述][1]][1]
我想要两列数据,第一列是转录因子,第二列是每个细胞一个单独的蛋白质,如下所示,正如您所见,第一列中每个转录因子都在重复
有什么帮助吗?
这个有用吗:
library(tidyr)
library(dplyr)
df %>% separate_rows(Proteins, sep = ';')
# A tibble: 15 x 2
TFs Proteins
<chr> <chr>
1 HNF4A HNF4A
2 HNF4A SUB1
3 E2F1 RB1
4 E2F1 E2F1
5 E2F1 E2F1
6 E2F1 TFDP1
7 E2F1 GABPB2
8 E2F1 CCNA2
9 E2F1 RBL1
10 E2F1 E2F1
11 E2F1 RB1
12 E2F1 E2F1
13 E2F1 CEBPE
14 E2F1 E2F1
15 E2F1 TFDP1
使用的数据:
df
TFs Proteins
1 HNF4A HNF4A;SUB1
2 E2F1 RB1;E2F1
3 E2F1 E2F1;TFDP1;GABPB2
4 E2F1 CCNA2;RBL1;E2F1
5 E2F1 RB1;E2F1;CEBPE
6 E2F1 E2F1;TFDP1
library(tidyverse)
df %>% separate_rows(Proteins, sep = ";")
# A tibble: 15 x 2
TFs Proteins
<chr> <chr>
1 HNF4A HNF4A
2 HNF4A SUB1
3 E2F1 RB1
4 E2F1 E2F1
5 E2F1 E2F1
6 E2F1 TFDP1
7 E2F1 GABPB2
8 E2F1 CCNA2
9 E2F1 RBL1
10 E2F1 E2F1
11 E2F1 RB1
12 E2F1 E2F1
13 E2F1 CEBPE
14 E2F1 E2F1
15 E2F1 TFDP1
data.table
library(data.table)
setDT(df)[, list(Proteins = unlist(strsplit(Proteins, split = ";"))), by = TFs]
TFs Proteins
1: HNF4A HNF4A
2: HNF4A SUB1
3: E2F1 RB1
4: E2F1 E2F1
5: E2F1 E2F1
6: E2F1 TFDP1
7: E2F1 GABPB2
8: E2F1 CCNA2
9: E2F1 RBL1
10: E2F1 E2F1
11: E2F1 RB1
12: E2F1 E2F1
13: E2F1 CEBPE
14: E2F1 E2F1
15: E2F1 TFDP1