计算载体中列出的每个基因的改变的样品数量

时间:2017-02-20 11:39:55

标签: r

我是R newby,想知道人们是否可以就如何处理我的数据提供一些建议。

我有一个数据框,其中包含基因观察到的变化样本列表(例如下面的例子)

Dataframe1:
Sample  Gene  Alteration
1       A     -1
1       B     -1
1       C     -1
1       D      1
2       B      1
2       E     -1 ...

我还有一个数据框,其中包含我感兴趣的基因列表(例如下面)

Dataframe2:
Gene
B
D
E

我想计算有多少样本对dataframe2中的每个基因进行-1更改,其理想输出类似于:

Dataframe3:
Gene   Alteration   Sum
B      -1            23
D      -1            2
E      -1            18

我真的不知道从哪里开始,我已经找到了很多关于总和等的信息,但我不知道如何将两个数据帧一起提供并利用总和。< / p>

我可以尝试的任何建议或功能都将非常感激。

3 个答案:

答案 0 :(得分:0)

您可以使用包plyr中的ddply函数。

library(plyr)
Dataframe3 <- ddply(Dataframe1, c('Gene', 'Alteration'), summarise, Sum = length(Alteration))

答案 1 :(得分:0)

步骤1:从dataframe1中选择感兴趣的基因:

set.seed(11)
dataframe1 = data.frame(Sample = rep(c(1,2), each = 5),
                      Gene = rep(c("A", "B", "C", "D","E"),2),
                      Alteration = sample(c(-1, 1), 10, prob = c(0.7, 0.3), replace = TRUE))
dataframe2 <- data.frame(Gene = c("B", "D", "E"))

# Select the genes of interest
dataframe1 <- dataframe1[dataframe1$Gene %in% dataframe2$Gene, ]

第2步:计算-1的总和

我们可以使用dplyr库来计算每组的总和:

library(dplyr)
dataframe1 %>%
    group_by(Gene) %>%
    summarise(Sum = sum(Alteration == -1))

请注意,当我们有一个布尔向量(包含TRUE和FALSE的向量)时,此向量的总和给出了TRUE的数量。

祝你好运!

答案 2 :(得分:0)

或者使用dplyr,只需尝试

即可
dft2 %>% 
  inner_join(dft1) %>%
  group_by(Gene, Alteration) %>%
  summarise( cnt = n()) %>%
  filter(Alteration == -1)

其中dft1是第一个数据帧,dft2是第二个数据帧

如果dft2dft1中找不到条目且您想显示空,请将inner_join更改为left_join