我如何计算患者中每个基因的表达水平并计算它们的频率

问题描述 投票:0回答:2

我有一个包含566个基因和208个患者的数据,经过几次尝试,我将数据转换为:

Fig.1

这是上述数据帧'df1'的可复制数据:

structure(list(Genes = c("ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2",  "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2",  "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2",  "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2",  "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2",  "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2",  "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2",  "ERLIN2", "ERLIN2", "ERLIN2", "ERLIN2"), Patients = c("TCGA-A1-A0SE-01",  "TCGA-A1-A0SH-01", "TCGA-A1-A0SJ-01", "TCGA-A1-A0SK-01", "TCGA-A1-A0SM-01",  "TCGA-A1-A0SO-01", "TCGA-A1-A0SP-01", "TCGA-A2-A04R-01", "TCGA-A2-A0CT-01",  "TCGA-A2-A0EN-01", "TCGA-A2-A0EU-01", "TCGA-A2-A0ST-01", "TCGA-A2-A0SU-01",  "TCGA-A2-A0SV-01", "TCGA-A2-A0SW-01", "TCGA-A2-A0SX-01", "TCGA-A2-A0SY-01",  "TCGA-A2-A0T0-01", "TCGA-A2-A0T1-01", "TCGA-A2-A0T2-01", "TCGA-A2-A0T4-01",  "TCGA-A2-A0T5-01", "TCGA-A2-A0T6-01", "TCGA-A2-A0T7-01", "TCGA-A2-A0YC-01",  "TCGA-A2-A0YD-01", "TCGA-A2-A0YE-01", "TCGA-A2-A0YF-01", "TCGA-A2-A0YG-01",  "TCGA-A2-A0YH-01", "TCGA-A2-A0YI-01", "TCGA-A2-A0YJ-01", "TCGA-A2-A0YK-01",  "TCGA-A2-A0YL-01", "TCGA-A2-A0YM-01", "TCGA-A2-A0YT-01", "TCGA-A7-A0D9-01",  "TCGA-A7-A13D-01", "TCGA-A7-A13E-01", "TCGA-A7-A13F-01", "TCGA-A8-A075-01",  "TCGA-A8-A08O-01", "TCGA-A8-A0A6-01", "TCGA-A8-A0AD-01", "TCGA-AN-A0XL-01",  "TCGA-AN-A0XN-01", "TCGA-AN-A0XO-01", "TCGA-AN-A0XP-01", "TCGA-AN-A0XR-01",  "TCGA-AN-A0XS-01"), levels = structure(c(ERLIN2 = 1L, ERLIN2 = 1L,  ERLIN2 = 1L, ERLIN2 = 1L, ERLIN2 = 1L, ERLIN2 = 1L, ERLIN2 = 1L,  ERLIN2 = 2L, ERLIN2 = 1L, ERLIN2 = 2L, ERLIN2 = 2L, ERLIN2 = 1L,  ERLIN2 = 2L, ERLIN2 = 1L, ERLIN2 = 2L, ERLIN2 = 1L, ERLIN2 = 1L,  ERLIN2 = 1L, ERLIN2 = 1L, ERLIN2 = 1L, ERLIN2 = 1L, ERLIN2 = 2L,  ERLIN2 = 2L, ERLIN2 = 1L, ERLIN2 = 2L, ERLIN2 = 2L, ERLIN2 = 2L,  ERLIN2 = 2L, ERLIN2 = 1L, ERLIN2 = 2L, ERLIN2 = 1L, ERLIN2 = 1L,  ERLIN2 = 2L, ERLIN2 = 2L, ERLIN2 = 1L, ERLIN2 = 1L, ERLIN2 = 2L,  ERLIN2 = 1L, ERLIN2 = 2L, ERLIN2 = 2L, ERLIN2 = 1L, ERLIN2 = 1L,  ERLIN2 = 1L, ERLIN2 = 2L, ERLIN2 = 1L, ERLIN2 = 2L, ERLIN2 = 2L,  ERLIN2 = 1L, ERLIN2 = 2L, ERLIN2 = 1L), .Label = c("down", "up" ), class = "factor")), row.names = c(NA, -50L), class = c("grouped_df",  "tbl_df", "tbl", "data.frame"), groups = structure(list(Genes = c("ERLIN2",  "ERLIN2"), levels = structure(1:2, .Label = c("down", "up"), class = "factor"), 
    .rows = list(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 9L, 12L, 14L, 
    16L, 17L, 18L, 19L, 20L, 21L, 24L, 29L, 31L, 32L, 35L, 36L, 
    38L, 41L, 42L, 43L, 45L, 48L, 50L), c(8L, 10L, 11L, 13L, 
    15L, 22L, 23L, 25L, 26L, 27L, 28L, 30L, 33L, 34L, 37L, 39L, 
    40L, 44L, 46L, 47L, 49L))), row.names = c(NA, -2L), class = c("tbl_df",  "tbl", "data.frame"), .drop = TRUE))

''基因'列:基因名称

“患者”列:患者

''水平'列:考虑的566个基因中每个基因的表达水平,包括两个水平中的一个:整个患者的'上'或'下']

现在,我要创建一个数据列'df2',其列为'total',其中包括每个基因每个表达水平的患者总数;和“频率”列=(每个基因每个表达水平的患者总数)/ 208(即患者总数)]

例如,它看起来像:

Genes-----levels-----total----frequency

ERLIN2----up----------50-----24.03%

ERLIN2----down------11-----5.28%

HER2------up----------15-----7.21%

HER2------down--------45-----21.63%

....

任何帮助将不胜感激。谢谢!

r count frequency
2个回答
0
投票

这是带有示例数据的快速整理解决方案

library(tidyverse) # install.packages("tidyverse")

data %>% 
  count(Genes, levels, name = "total") %>%
  ungroup() %>% 
  mutate(frequency = total / sum(total, na.rm = TRUE))

0
投票

也许您可以通过table尝试使用基本R选项>

df1out <- transform(as.data.frame.table(table(df1[-2])),
    total = Freq,
    Freq = Freq / nrow(df1)
)
© www.soinside.com 2019 - 2024. All rights reserved.