我们需要一个代码R/shell/Perl/python来计算基于第一列和第二列的第三列的平均值。我们有大量数据,因此需要一个代码/命令。这是我的输入示例和所需的输出格式。
[Input_data_sample][1]
Gene_IDs Tissues Expressions
A X 2
A X 3
A Y 2
B X 3
B X 4
B Y 5
B Y 2
C X 3
C X 2
C Y 3
C Y 2
C Y 3
D X 2
D Y 2
D Y 3
需要的预期输出
[Expected_Output][2]
Gene ID Tissue Expression_average_of each tissue_for_each_Gens_IDs
A X 2.5
A Y 2
B X 3.5
B Y 3.5
开始吧。我已经使用了你帖子中的数据。它是使用tidyverse
包中的dplyr
库的R
代码。
> library(dplyr)
> df = read.table(text="Gene_IDs Tissues Expressions
+ A X 2
+ A X 3
+ A Y 2
+ B X 3
+ B X 4
+ B Y 5
+ B Y 2
+ C X 3
+ C X 2
+ C Y 3
+ C Y 2
+ C Y 3
+ D X 2
+ D Y 2
+ D Y 3
+ ", header=T) %>% tibble()
> df
# A tibble: 15 × 3
Gene_IDs Tissues Expressions
<chr> <chr> <int>
1 A X 2
2 A X 3
3 A Y 2
4 B X 3
5 B X 4
6 B Y 5
7 B Y 2
8 C X 3
9 C X 2
10 C Y 3
11 C Y 2
12 C Y 3
13 D X 2
14 D Y 2
15 D Y 3
> df %>% group_by(Gene_IDs, Tissues) %>% summarise(avg = mean(Expressions))
# A tibble: 8 × 3
# Groups: Gene_IDs [4]
Gene_IDs Tissues avg
<chr> <chr> <dbl>
1 A X 2.5
2 A Y 2
3 B X 3.5
4 B Y 3.5
5 C X 2.5
6 C Y 2.67
7 D X 2
8 D Y 2.5