如何在 reshape2::melt 之后保留 'long' 数据中的值分组?
How to retain grouping of values in 'long' data after reshape2::melt?
我正在使用 R 包 reshape 的 melt
函数,并生成一个双条形图(并排)来显示几十个物种的两种不同类型的遗传保护的值。
我可以在 "wide" 时订购此列表,例如arrange(species.table, desc(miR), species)
:
... species miR snoR
1 Cow 1.0000000 0.9925373
2 Sheep 1.0000000 0.9925373
3 Cat 0.9967914 1.0000000
4 Dog 0.9967914 1.0000000
5 Panda 0.9967914 1.0000000
6 White_rhinoceros 0.9967914 1.0000000
7 Alpaca 0.9775401 0.9626866
8 Guinea_Pig 0.9775401 0.9776119
9 Pika 0.9775401 0.9626866
10 Rat 0.9775401 0.9776119
11 Mouse 0.9358289 0.9701493
12 Horse 0.9294118 0.9726368
13 Pig 0.9294118 0.9726368
14 Chinese_Hamster 0.9155080 0.9527363
...
但是广泛的数据表明两种保护类型在不同的品系上,将物种分开。我怎样才能得到列表中的物种 'paired',而不是例如:
... species variable value
1 Cat snoR 1.0000000
2 Cow miR 1.0000000
3 Dog snoR 1.0000000
4 Panda snoR 1.0000000
5 Sheep miR 1.0000000
6 White_rhinoceros snoR 1.0000000
7 Cat miR 0.9967914
8 Dog miR 0.9967914
9 Panda miR 0.9967914
10 White_rhinoceros miR 0.9967914
11 Cow snoR 0.9925373
12 Sheep snoR 0.9925373
13 Elephant snoR 0.9875622
14 Rabbit snoR 0.9875622
15 Shrew snoR 0.9875622
16 Tenrec snoR 0.9875622
17 Guinea_Pig snoR 0.9776119
18 Rat snoR 0.9776119
...
我的直觉是......我必须逐行融化数据才能实现这一点,并将生成的行对与 rbind
(或一些更有效的非基础 R 等价物)连接起来。有没有更合法的内置方法来做到这一点?即让融化的数据知道我想要一个逐个物种的列表并保持相同的物种相邻?
例如更像是:
... species variable value
1 Cow miR 1.0000000
2 Cow snoR 0.9925373
3 Dog snoR 1.0000000
4 Dog miR 0.9967914
5 Panda snoR 1.0000000
6 Panda miR 0.9967914
7 Sheep miR 1.0000000
8 Sheep snoR 0.9925373
9 White_rhinoceros miR 0.9967914
10 White_rhinoceros snoR 1.0000000
...
从你的广泛数据开始,我想你想对每个物种的两个表达值的总和进行排序:
library(dplyr)
library(tidyr)
dat %>% mutate(new = miR + snoR) %>%
gather(type, expression, -species, -new) %>%
arrange(desc(new), species, type) %>%
select(-new)
species type expression
1 Cat miR 0.9967914
2 Cat snoR 1.0000000
3 Dog miR 0.9967914
4 Dog snoR 1.0000000
5 Panda miR 0.9967914
6 Panda snoR 1.0000000
7 White_rhinoceros miR 0.9967914
8 White_rhinoceros snoR 1.0000000
9 Cow miR 1.0000000
10 Cow snoR 0.9925373
11 Sheep miR 1.0000000
12 Sheep snoR 0.9925373
13 Guinea_Pig miR 0.9775401
14 Guinea_Pig snoR 0.9776119
我正在使用 R 包 reshape 的 melt
函数,并生成一个双条形图(并排)来显示几十个物种的两种不同类型的遗传保护的值。
我可以在 "wide" 时订购此列表,例如arrange(species.table, desc(miR), species)
:
... species miR snoR
1 Cow 1.0000000 0.9925373
2 Sheep 1.0000000 0.9925373
3 Cat 0.9967914 1.0000000
4 Dog 0.9967914 1.0000000
5 Panda 0.9967914 1.0000000
6 White_rhinoceros 0.9967914 1.0000000
7 Alpaca 0.9775401 0.9626866
8 Guinea_Pig 0.9775401 0.9776119
9 Pika 0.9775401 0.9626866
10 Rat 0.9775401 0.9776119
11 Mouse 0.9358289 0.9701493
12 Horse 0.9294118 0.9726368
13 Pig 0.9294118 0.9726368
14 Chinese_Hamster 0.9155080 0.9527363
...
但是广泛的数据表明两种保护类型在不同的品系上,将物种分开。我怎样才能得到列表中的物种 'paired',而不是例如:
... species variable value
1 Cat snoR 1.0000000
2 Cow miR 1.0000000
3 Dog snoR 1.0000000
4 Panda snoR 1.0000000
5 Sheep miR 1.0000000
6 White_rhinoceros snoR 1.0000000
7 Cat miR 0.9967914
8 Dog miR 0.9967914
9 Panda miR 0.9967914
10 White_rhinoceros miR 0.9967914
11 Cow snoR 0.9925373
12 Sheep snoR 0.9925373
13 Elephant snoR 0.9875622
14 Rabbit snoR 0.9875622
15 Shrew snoR 0.9875622
16 Tenrec snoR 0.9875622
17 Guinea_Pig snoR 0.9776119
18 Rat snoR 0.9776119
...
我的直觉是......我必须逐行融化数据才能实现这一点,并将生成的行对与 rbind
(或一些更有效的非基础 R 等价物)连接起来。有没有更合法的内置方法来做到这一点?即让融化的数据知道我想要一个逐个物种的列表并保持相同的物种相邻?
例如更像是:
... species variable value
1 Cow miR 1.0000000
2 Cow snoR 0.9925373
3 Dog snoR 1.0000000
4 Dog miR 0.9967914
5 Panda snoR 1.0000000
6 Panda miR 0.9967914
7 Sheep miR 1.0000000
8 Sheep snoR 0.9925373
9 White_rhinoceros miR 0.9967914
10 White_rhinoceros snoR 1.0000000
...
从你的广泛数据开始,我想你想对每个物种的两个表达值的总和进行排序:
library(dplyr)
library(tidyr)
dat %>% mutate(new = miR + snoR) %>%
gather(type, expression, -species, -new) %>%
arrange(desc(new), species, type) %>%
select(-new)
species type expression
1 Cat miR 0.9967914
2 Cat snoR 1.0000000
3 Dog miR 0.9967914
4 Dog snoR 1.0000000
5 Panda miR 0.9967914
6 Panda snoR 1.0000000
7 White_rhinoceros miR 0.9967914
8 White_rhinoceros snoR 1.0000000
9 Cow miR 1.0000000
10 Cow snoR 0.9925373
11 Sheep miR 1.0000000
12 Sheep snoR 0.9925373
13 Guinea_Pig miR 0.9775401
14 Guinea_Pig snoR 0.9776119